diff --git a/src/app/actionItems.ts b/src/app/actionItems.ts new file mode 100644 index 00000000..418920b9 --- /dev/null +++ b/src/app/actionItems.ts @@ -0,0 +1,89 @@ +import { + REPORT, + ROOM_ADD_MEMBER, + ROOM_JOIN, + ROOM_LEAVE, + ROOM_MEMBERS, + ROOM_REMOVE_MEMBER, + getPubkeyTagValues, + getTagValue, + sortEventsDesc, +} from "@welshman/util" +import type {TrustedEvent} from "@welshman/util" +import {first, groupBy, removeUndefined} from "@welshman/lib" +import {derived} from "svelte/store" +import {deriveEventsForUrl} from "@app/repository" +import {getRoomMembers} from "@app/members" +// Action items (admin review queue) + +export const deriveSpaceActionItems = (url: string) => + derived( + deriveEventsForUrl(url, [ + { + kinds: [REPORT, ROOM_JOIN, ROOM_LEAVE, ROOM_MEMBERS, ROOM_ADD_MEMBER, ROOM_REMOVE_MEMBER], + }, + ]), + $events => { + const getRoomId = (e: TrustedEvent) => + getTagValue(e.kind === ROOM_MEMBERS ? "d" : "h", e.tags) + const reports = $events.filter(e => e.kind === REPORT) + const pendingJoins: TrustedEvent[] = [] + + // Room-level join requests — most recent per pubkey+h + for (const [h, roomEvents] of groupBy(getRoomId, $events)) { + if (!h) continue + + const roomJoins: TrustedEvent[] = [] + const roomLeaves: TrustedEvent[] = [] + const roomMembershipEvents: TrustedEvent[] = [] + + for (const event of roomEvents) { + switch (event.kind) { + case ROOM_JOIN: + roomJoins.push(event) + break + case ROOM_LEAVE: + roomLeaves.push(event) + break + case ROOM_MEMBERS: + case ROOM_ADD_MEMBER: + case ROOM_REMOVE_MEMBER: + roomMembershipEvents.push(event) + break + } + } + + const roomMembers = new Set(getRoomMembers(url, h, roomMembershipEvents)) + + pendingJoins.push( + ...removeUndefined( + Array.from(groupBy(e => e.pubkey, roomJoins).values()).map(events => + first(sortEventsDesc(events)), + ), + ).filter(({pubkey, created_at}) => { + if (roomMembers.has(pubkey)) return false + if ( + roomMembershipEvents.some(event => { + if (event.created_at <= created_at) { + return false + } + + if (event.kind === ROOM_MEMBERS) { + return true + } + + return getPubkeyTagValues(event.tags).includes(pubkey) + }) + ) { + return false + } + if (roomLeaves.some(e => e.pubkey === pubkey && e.created_at > created_at)) return false + + return true + }), + ) + } + + return sortEventsDesc([...reports, ...pendingJoins]) + }, + ) diff --git a/src/app/analytics.ts b/src/app/analytics.ts index 7bdae02a..d0c22d43 100644 --- a/src/app/analytics.ts +++ b/src/app/analytics.ts @@ -1,7 +1,7 @@ /* eslint prefer-rest-params: 0 */ import {page} from "$app/stores" -import {getSetting} from "@app/core/state" +import {getSetting} from "@app/settings" const w = window as any diff --git a/src/app/call/stores.ts b/src/app/call/stores.ts index 01053486..d7e4adff 100644 --- a/src/app/call/stores.ts +++ b/src/app/call/stores.ts @@ -1,6 +1,6 @@ import {Room as LiveKitRoom} from "livekit-client" import {derived, writable} from "svelte/store" -import {type Room} from "@app/core/state" +import type {Room} from "@app/groups" export type VoiceSession = { url: string diff --git a/src/app/call/voice.ts b/src/app/call/voice.ts index 7eafbe39..57796c45 100644 --- a/src/app/call/voice.ts +++ b/src/app/call/voice.ts @@ -36,7 +36,8 @@ import { voiceState, } from "@app/call/stores" import {resetVideoCallLayout, triggerVideoFeedCount, videoPrimaryTileKey} from "@app/call/video" -import {deriveLatestEventForUrl, deriveRoom, makeRoomId} from "@app/core/state" +import {deriveLatestEventForUrl} from "@app/repository" +import {deriveRoom, makeRoomId} from "@app/groups" import {pushToast} from "@app/toast" export const LIVEKIT_PARTICIPANTS = 39004 diff --git a/src/app/chats.ts b/src/app/chats.ts new file mode 100644 index 00000000..bdb088cd --- /dev/null +++ b/src/app/chats.ts @@ -0,0 +1,139 @@ +import {DELETE, PROFILE, getPubkeyTagValues} from "@welshman/util" +import type {TrustedEvent} from "@welshman/util" +import {append, call, on, reject, remove, sort, sortBy, spec, uniq, uniqBy} from "@welshman/lib" +import type {Override} from "@welshman/lib" +import {createSearch, displayProfileByPubkey, pubkey, repository} from "@welshman/app" +import {derived, readable} from "svelte/store" +import {DM_KINDS} from "@app/content" +import type {RepositoryUpdate} from "@welshman/net" +import {makeDeriveItem, throttled} from "@welshman/store" +export type Chat = { + id: string + pubkeys: string[] + messages: TrustedEvent[] + last_activity: number + search_text: string +} + +export const getChatPubkeys = (pubkeys: string[]) => sort(uniq(append(pubkey.get()!, pubkeys))) + +export const getChatPubkeysFromEvent = (event: TrustedEvent) => + getChatPubkeys(getPubkeyTagValues(event.tags).concat(event.pubkey)) + +export const makeChatId = (pubkeys: string[]) => { + const userPubkey = pubkey.get()! + const otherPubkeys = remove(userPubkey, uniq(pubkeys)) + const visiblePubkeys = otherPubkeys.length === 0 ? [userPubkey] : otherPubkeys + + return sort(visiblePubkeys).join(",") +} + +export const splitChatId = (id: string) => getChatPubkeys(id.split(",")) + +export const chatsById = call(() => { + const chatsById = new Map() + const chatsByPubkey = new Map() + + const addSearchText = (chat: Override) => { + chat.search_text = + chat.pubkeys.length === 1 + ? displayProfileByPubkey(chat.pubkeys[0]) + " note to self" + : remove(pubkey.get()!, chat.pubkeys).map(displayProfileByPubkey).join(" ") + + return chat as Chat + } + + return readable(chatsById, set => { + const indexChatByPubkeys = (chat: Chat) => { + for (const pubkey of chat.pubkeys) { + chatsByPubkey.set(pubkey, uniq(append(chat.id, chatsByPubkey.get(pubkey) || []))) + } + } + + const addEvents = (events: TrustedEvent[]) => { + let dirty = false + for (const event of events) { + if (DM_KINDS.includes(event.kind)) { + const pubkeys = getChatPubkeysFromEvent(event) + const id = makeChatId(pubkeys) + const chat = chatsById.get(id) + const messages = sortBy( + e => -e.created_at, + uniqBy(e => e.id, append(event, chat?.messages || [])), + ) + const last_activity = Math.max(chat?.last_activity || 0, event.created_at) + const updatedChat = addSearchText({id, pubkeys, messages, last_activity}) + + chatsById.set(id, updatedChat) + indexChatByPubkeys(updatedChat) + + dirty = true + } + + if (event.kind === PROFILE) { + for (const chatId of chatsByPubkey.get(event.pubkey) || []) { + const chat = chatsById.get(chatId) + + if (chat) { + addSearchText(chat) + dirty = true + } + } + } + } + + if (dirty) { + set(chatsById) + } + } + + const removeEvents = (removed: Set) => { + let dirty = false + + for (const id of removed) { + const event = repository.getEvent(id) + + if (event && DM_KINDS.includes(event.kind)) { + for (const chatId of chatsByPubkey.get(event.pubkey) || []) { + const chat = chatsById.get(chatId) + + if (chat) { + chat.messages = reject(spec({id: event.id}), chat.messages) + dirty = true + } + } + } + } + + if (dirty) { + set(chatsById) + } + } + + addEvents(repository.query([{kinds: [...DM_KINDS, DELETE, PROFILE]}])) + + const unsubscribers = [ + on(repository, "update", ({added, removed}: RepositoryUpdate) => { + // Do this async so that profiles are populated + setTimeout(() => { + addEvents(added) + removeEvents(removed) + }, 200) + }), + ] + + return () => unsubscribers.forEach(call) + }) +}) + +export const deriveChat = makeDeriveItem(chatsById) + +export const chatSearch = derived(throttled(1500, chatsById), $chatsByPubkey => { + return createSearch( + sortBy(c => -c.last_activity, Array.from($chatsByPubkey.values())), + { + getValue: (chat: Chat) => chat.id, + fuseOptions: {keys: ["search_text"]}, + }, + ) +}) diff --git a/src/app/comments.ts b/src/app/comments.ts new file mode 100644 index 00000000..b74fa5b1 --- /dev/null +++ b/src/app/comments.ts @@ -0,0 +1,16 @@ +import type {TrustedEvent} from "@welshman/util" +import {COMMENT, makeEvent} from "@welshman/util" +import {publishThunk, tagEventForComment} from "@welshman/app" + +export type CommentParams = { + event: TrustedEvent + content: string + tags?: string[][] + url?: string +} + +export const makeComment = ({url, event, content, tags = []}: CommentParams) => + makeEvent(COMMENT, {content, tags: [...tags, ...tagEventForComment(event, url)]}) + +export const publishComment = ({relays, ...params}: CommentParams & {relays: string[]}) => + publishThunk({event: makeComment({url: relays[0], ...params}), relays}) diff --git a/src/app/components/CalendarEventActions.svelte b/src/app/components/CalendarEventActions.svelte index 6908083b..38a026b7 100644 --- a/src/app/components/CalendarEventActions.svelte +++ b/src/app/components/CalendarEventActions.svelte @@ -12,7 +12,9 @@ import EventActivity from "@app/components/EventActivity.svelte" import EventActions from "@app/components/EventActions.svelte" import CalendarEventEdit from "@app/components/CalendarEventEdit.svelte" - import {publishDelete, publishReaction, canEnforceNip70} from "@app/core/commands" + import {publishDelete} from "@app/deletes" + import {publishReaction} from "@app/reactions" + import {canEnforceNip70} from "@app/relays" import {makeCalendarPath, makeSpacePath} from "@app/routes" import {pushModal} from "@app/modal" diff --git a/src/app/components/CalendarEventForm.svelte b/src/app/components/CalendarEventForm.svelte index 71bfeacf..30b852d3 100644 --- a/src/app/components/CalendarEventForm.svelte +++ b/src/app/components/CalendarEventForm.svelte @@ -18,11 +18,11 @@ import ModalBody from "@lib/components/ModalBody.svelte" import DateTimeInput from "@lib/components/DateTimeInput.svelte" import EditorContent from "@app/editor/EditorContent.svelte" - import {PROTECTED} from "@app/core/state" + import {PROTECTED, publishRoomQuote} from "@app/groups" import {makeEditor} from "@app/editor" import {DraftKey} from "@app/drafts" import {pushToast} from "@app/toast" - import {canEnforceNip70, publishRoomQuote} from "@app/core/commands" + import {canEnforceNip70} from "@app/relays" type Values = { d: string diff --git a/src/app/components/Chat.svelte b/src/app/components/Chat.svelte index 70f7bb62..fb3e2931 100644 --- a/src/app/components/Chat.svelte +++ b/src/app/components/Chat.svelte @@ -53,10 +53,12 @@ import ChatComposeEdit from "@app/components/ChatComposeEdit.svelte" import ChatComposeParent from "@app/components/ChatComposeParent.svelte" import ThunkToast from "@app/components/ThunkToast.svelte" - import {userSettingsValues, deriveChat, makeChatId} from "@app/core/state" + import {userSettingsValues} from "@app/settings" + import {deriveChat, makeChatId} from "@app/chats" import {pushModal} from "@app/modal" import {DraftKey} from "@app/drafts" - import {makeDelete, prependParent} from "@app/core/commands" + import {makeDelete} from "@app/deletes" + import {prependParent} from "@app/groups" import {pushToast} from "@app/toast" type Props = { diff --git a/src/app/components/ChatEnable.svelte b/src/app/components/ChatEnable.svelte index 0da9c80b..c22d245e 100644 --- a/src/app/components/ChatEnable.svelte +++ b/src/app/components/ChatEnable.svelte @@ -12,7 +12,7 @@ import ModalHeader from "@lib/components/ModalHeader.svelte" import ModalTitle from "@lib/components/ModalTitle.svelte" import ModalFooter from "@lib/components/ModalFooter.svelte" - import {DEFAULT_RELAYS, DEFAULT_MESSAGING_RELAYS} from "@app/core/state" + import {DEFAULT_RELAYS, DEFAULT_MESSAGING_RELAYS} from "@app/env" import {pushToast} from "@app/toast" type Props = { diff --git a/src/app/components/ChatMenu.svelte b/src/app/components/ChatMenu.svelte index e4381bc8..b4ae57a5 100644 --- a/src/app/components/ChatMenu.svelte +++ b/src/app/components/ChatMenu.svelte @@ -8,7 +8,7 @@ import Modal from "@lib/components/Modal.svelte" import ModalBody from "@lib/components/ModalBody.svelte" import {setChecked} from "@app/notifications" - import {notificationSettings} from "@app/core/state" + import {notificationSettings} from "@app/settings" const markAsRead = () => { setChecked("/chat/*") diff --git a/src/app/components/ChatMessage.svelte b/src/app/components/ChatMessage.svelte index 8b9823d5..2293deb9 100644 --- a/src/app/components/ChatMessage.svelte +++ b/src/app/components/ChatMessage.svelte @@ -16,8 +16,9 @@ import ProfileDetail from "@app/components/ProfileDetail.svelte" import ChatMessageMenu from "@app/components/ChatMessageMenu.svelte" import ChatMessageMenuMobile from "@app/components/ChatMessageMenuMobile.svelte" - import {colors} from "@app/core/state" - import {makeDelete, makeReaction} from "@app/core/commands" + import {colors} from "@app/theme" + import {makeDelete} from "@app/deletes" + import {makeReaction} from "@app/reactions" import {pushModal} from "@app/modal" interface Props { diff --git a/src/app/components/ChatMessageEmojiButton.svelte b/src/app/components/ChatMessageEmojiButton.svelte index 0d438e01..9488a0d2 100644 --- a/src/app/components/ChatMessageEmojiButton.svelte +++ b/src/app/components/ChatMessageEmojiButton.svelte @@ -5,7 +5,7 @@ import SmileCircle from "@assets/icons/smile-circle.svg?dataurl" import Icon from "@lib/components/Icon.svelte" import EmojiButton from "@lib/components/EmojiButton.svelte" - import {makeReaction} from "@app/core/commands" + import {makeReaction} from "@app/reactions" interface Props { event: TrustedEvent diff --git a/src/app/components/ChatMessageMenuMobile.svelte b/src/app/components/ChatMessageMenuMobile.svelte index e9a84ef5..c5452f63 100644 --- a/src/app/components/ChatMessageMenuMobile.svelte +++ b/src/app/components/ChatMessageMenuMobile.svelte @@ -13,7 +13,7 @@ import Button from "@lib/components/Button.svelte" import EmojiPicker from "@lib/components/EmojiPicker.svelte" import EventInfo from "@app/components/EventInfo.svelte" - import {makeReaction} from "@app/core/commands" + import {makeReaction} from "@app/reactions" import {pushModal} from "@app/modal" import {clip} from "@app/toast" diff --git a/src/app/components/ClassifiedActions.svelte b/src/app/components/ClassifiedActions.svelte index e79ab04f..2de299d3 100644 --- a/src/app/components/ClassifiedActions.svelte +++ b/src/app/components/ClassifiedActions.svelte @@ -15,7 +15,9 @@ import EventActivity from "@app/components/EventActivity.svelte" import EventActions from "@app/components/EventActions.svelte" import ClassifiedEdit from "@app/components/ClassifiedEdit.svelte" - import {publishDelete, publishReaction, canEnforceNip70} from "@app/core/commands" + import {publishDelete} from "@app/deletes" + import {publishReaction} from "@app/reactions" + import {canEnforceNip70} from "@app/relays" import {makeClassifiedPath, makeSpacePath} from "@app/routes" import {pushModal} from "@app/modal" diff --git a/src/app/components/ClassifiedForm.svelte b/src/app/components/ClassifiedForm.svelte index 3b26d317..d76ccd7f 100644 --- a/src/app/components/ClassifiedForm.svelte +++ b/src/app/components/ClassifiedForm.svelte @@ -18,10 +18,11 @@ import TopicMultiSelect from "@app/components/TopicMultiSelect.svelte" import EditorContent from "@app/editor/EditorContent.svelte" import {pushToast} from "@app/toast" - import {PROTECTED} from "@app/core/state" + import {PROTECTED, publishRoomQuote} from "@app/groups" import {makeEditor} from "@app/editor" import {DraftKey} from "@app/drafts" - import {canEnforceNip70, publishRoomQuote, uploadFile} from "@app/core/commands" + import {canEnforceNip70} from "@app/relays" + import {uploadFile} from "@app/uploads" type Values = { d: string diff --git a/src/app/components/CommentActions.svelte b/src/app/components/CommentActions.svelte index 380e6eb9..e6ed4db0 100644 --- a/src/app/components/CommentActions.svelte +++ b/src/app/components/CommentActions.svelte @@ -4,7 +4,9 @@ import ThunkStatusOrDeleted from "@app/components/ThunkStatusOrDeleted.svelte" import EventActivity from "@app/components/EventActivity.svelte" import EventActions from "@app/components/EventActions.svelte" - import {publishDelete, publishReaction, canEnforceNip70} from "@app/core/commands" + import {publishDelete} from "@app/deletes" + import {publishReaction} from "@app/reactions" + import {canEnforceNip70} from "@app/relays" import {makeSpacePath} from "@app/routes" interface Props { diff --git a/src/app/components/Content.svelte b/src/app/components/Content.svelte index 722a3007..19c59eeb 100644 --- a/src/app/components/Content.svelte +++ b/src/app/components/Content.svelte @@ -35,7 +35,8 @@ import ContentQuote from "@app/components/ContentQuote.svelte" import ContentTopic from "@app/components/ContentTopic.svelte" import ContentMention from "@app/components/ContentMention.svelte" - import {entityLink, userSettingsValues} from "@app/core/state" + import {entityLink} from "@app/env" + import {userSettingsValues} from "@app/settings" interface Props { event: any diff --git a/src/app/components/ContentLinkBlock.svelte b/src/app/components/ContentLinkBlock.svelte index 319510a1..e6dfc90b 100644 --- a/src/app/components/ContentLinkBlock.svelte +++ b/src/app/components/ContentLinkBlock.svelte @@ -8,14 +8,9 @@ import ContentLinkUrl from "@app/components/ContentLinkUrl.svelte" import ContentLinkBlockImage from "@app/components/ContentLinkBlockImage.svelte" import {pushModal} from "@app/modal" - import { - dufflepud, - IMAGE_CONTENT_TYPES, - PLATFORM_URL, - VIDEO_CONTENT_TYPES, - THUMBNAIL_URL, - isRoomId, - } from "@app/core/state" + import {dufflepud, PLATFORM_URL, THUMBNAIL_URL} from "@app/env" + import {IMAGE_CONTENT_TYPES, VIDEO_CONTENT_TYPES} from "@app/content" + import {isRoomId} from "@app/groups" const {value, event} = $props() diff --git a/src/app/components/ContentLinkInline.svelte b/src/app/components/ContentLinkInline.svelte index b894f1ce..ff2a661a 100644 --- a/src/app/components/ContentLinkInline.svelte +++ b/src/app/components/ContentLinkInline.svelte @@ -7,7 +7,7 @@ import ContentLinkDetail from "@app/components/ContentLinkDetail.svelte" import ContentLinkUrl from "@app/components/ContentLinkUrl.svelte" import {pushModal} from "@app/modal" - import {IMAGE_CONTENT_TYPES} from "@app/core/state" + import {IMAGE_CONTENT_TYPES} from "@app/content" const {value, event} = $props() diff --git a/src/app/components/ContentLinkUrl.svelte b/src/app/components/ContentLinkUrl.svelte index ec46636e..0b786d5f 100644 --- a/src/app/components/ContentLinkUrl.svelte +++ b/src/app/components/ContentLinkUrl.svelte @@ -4,7 +4,8 @@ import LinkRound from "@assets/icons/link-round.svg?dataurl" import Icon from "@lib/components/Icon.svelte" import Link from "@lib/components/Link.svelte" - import {PLATFORM_URL, displayRoom, isRoomId, splitRoomId} from "@app/core/state" + import {PLATFORM_URL} from "@app/env" + import {displayRoom, isRoomId, splitRoomId} from "@app/groups" import {makeRoomPath, makeSpacePath} from "@app/routes" const { diff --git a/src/app/components/ContentMinimal.svelte b/src/app/components/ContentMinimal.svelte index 100f6367..f35be776 100644 --- a/src/app/components/ContentMinimal.svelte +++ b/src/app/components/ContentMinimal.svelte @@ -31,7 +31,8 @@ import ContentNewline from "@app/components/ContentNewline.svelte" import ContentTopic from "@app/components/ContentTopic.svelte" import ContentMention from "@app/components/ContentMention.svelte" - import {entityLink, userSettingsValues} from "@app/core/state" + import {entityLink} from "@app/env" + import {userSettingsValues} from "@app/settings" interface Props { event: any diff --git a/src/app/components/ContentQuote.svelte b/src/app/components/ContentQuote.svelte index 23e82d66..d02b3f10 100644 --- a/src/app/components/ContentQuote.svelte +++ b/src/app/components/ContentQuote.svelte @@ -7,7 +7,8 @@ import Spinner from "@lib/components/Spinner.svelte" import NoteCard from "@app/components/NoteCard.svelte" import NoteContentMinimal from "@app/components/NoteContentMinimal.svelte" - import {deriveEvent, entityLink} from "@app/core/state" + import {deriveEvent} from "@app/repository" + import {entityLink} from "@app/env" import {goToEvent} from "@app/routes" type Props = { diff --git a/src/app/components/EventActions.svelte b/src/app/components/EventActions.svelte index c4e27af6..6c12d463 100644 --- a/src/app/components/EventActions.svelte +++ b/src/app/components/EventActions.svelte @@ -12,8 +12,9 @@ import ZapButton from "@app/components/ZapButton.svelte" import EmojiButton from "@lib/components/EmojiButton.svelte" import EventMenu from "@app/components/EventMenu.svelte" - import {ENABLE_ZAPS} from "@app/core/state" - import {publishReaction, canEnforceNip70} from "@app/core/commands" + import {ENABLE_ZAPS} from "@app/env" + import {publishReaction} from "@app/reactions" + import {canEnforceNip70} from "@app/relays" type Props = { url: string diff --git a/src/app/components/EventDeleteConfirm.svelte b/src/app/components/EventDeleteConfirm.svelte index e9e1931c..c2770f1e 100644 --- a/src/app/components/EventDeleteConfirm.svelte +++ b/src/app/components/EventDeleteConfirm.svelte @@ -1,7 +1,8 @@ history.back() diff --git a/src/app/components/InfoRelay.svelte b/src/app/components/InfoRelay.svelte index e1ab12c1..00298a1b 100644 --- a/src/app/components/InfoRelay.svelte +++ b/src/app/components/InfoRelay.svelte @@ -6,7 +6,7 @@ import ModalFooter from "@lib/components/ModalFooter.svelte" import Modal from "@lib/components/Modal.svelte" import ModalBody from "@lib/components/ModalBody.svelte" - import {PLATFORM_NAME} from "@app/core/state" + import {PLATFORM_NAME} from "@app/env" diff --git a/src/app/components/InputProfilePicture.svelte b/src/app/components/InputProfilePicture.svelte index 339300ed..91bc5f55 100644 --- a/src/app/components/InputProfilePicture.svelte +++ b/src/app/components/InputProfilePicture.svelte @@ -5,7 +5,7 @@ import AddCircle from "@assets/icons/add-circle.svg?dataurl" import GallerySend from "@assets/icons/gallery-send.svg?dataurl" import Icon from "@lib/components/Icon.svelte" - import {uploadFile} from "@app/core/commands" + import {uploadFile} from "@app/uploads" interface Props { file?: File | undefined diff --git a/src/app/components/KeyDownload.svelte b/src/app/components/KeyDownload.svelte index 4eae1df8..98af72b3 100644 --- a/src/app/components/KeyDownload.svelte +++ b/src/app/components/KeyDownload.svelte @@ -17,7 +17,7 @@ import ModalFooter from "@lib/components/ModalFooter.svelte" import ProgressBar from "@app/components/ProgressBar.svelte" import {pushToast} from "@app/toast" - import {PLATFORM_NAME} from "@app/core/state" + import {PLATFORM_NAME} from "@app/env" type Props = { secret: string diff --git a/src/app/components/Landing.svelte b/src/app/components/Landing.svelte index c2a4098f..f6c0d858 100644 --- a/src/app/components/Landing.svelte +++ b/src/app/components/Landing.svelte @@ -9,7 +9,7 @@ import CardButton from "@lib/components/CardButton.svelte" import LogIn from "@app/components/LogIn.svelte" import SignUp from "@app/components/SignUp.svelte" - import {PLATFORM_TERMS, PLATFORM_PRIVACY, PLATFORM_NAME} from "@app/core/state" + import {PLATFORM_TERMS, PLATFORM_PRIVACY, PLATFORM_NAME} from "@app/env" import {pushModal} from "@app/modal" const logIn = () => pushModal(LogIn) diff --git a/src/app/components/LogIn.svelte b/src/app/components/LogIn.svelte index e2458840..8aa30d87 100644 --- a/src/app/components/LogIn.svelte +++ b/src/app/components/LogIn.svelte @@ -19,7 +19,7 @@ import LogInEmail from "@app/components/LogInEmail.svelte" import LogInKey from "@app/components/LogInKey.svelte" import {pushModal, clearModals} from "@app/modal" - import {PLATFORM_NAME, POMADE_SIGNERS} from "@app/core/state" + import {PLATFORM_NAME, POMADE_SIGNERS} from "@app/env" import {pushToast} from "@app/toast" import {setChecked} from "@app/notifications" diff --git a/src/app/components/LogInBunker.svelte b/src/app/components/LogInBunker.svelte index 8c538def..2471c09f 100644 --- a/src/app/components/LogInBunker.svelte +++ b/src/app/components/LogInBunker.svelte @@ -23,7 +23,8 @@ import {clearModals} from "@app/modal" import {setChecked} from "@app/notifications" import {pushToast} from "@app/toast" - import {SIGNER_RELAYS, NIP46_PERMS} from "@app/core/state" + import {SIGNER_RELAYS} from "@app/env" + import {NIP46_PERMS} from "@app/nip46" const back = () => { if (mode === "connect") { diff --git a/src/app/components/NewNotificationSound.svelte b/src/app/components/NewNotificationSound.svelte index d0d6a803..ae4b1a20 100644 --- a/src/app/components/NewNotificationSound.svelte +++ b/src/app/components/NewNotificationSound.svelte @@ -1,6 +1,6 @@