From 9abdf4292173aa6bd0cf4a4f3295b5b769d5c3e9 Mon Sep 17 00:00:00 2001 From: Kgothatso Ngako Date: Wed, 15 Jul 2026 01:14:46 +0200 Subject: [PATCH] Refactor torch to mantra --- composeApp/build.gradle.kts | 8 +- .../src/androidMain/AndroidManifest.xml | 4 +- .../src/androidMain/ic_launcher-playstore.png | Bin 28549 -> 18042 bytes .../acinq/phoenix/android/BusinessManager.kt | 8 +- .../android/services/ChannelsWatcher.kt | 2 +- .../android/services/ContactsPhotoCleaner.kt | 2 +- .../phoenix/android/services/DailyConnect.kt | 2 +- .../services/InflightPaymentsWatcher.kt | 6 +- .../services/PaymentsForegroundService.kt | 6 +- .../phoenix/utils/ContactsPhotoHelper.kt | 2 +- .../phoenix/utils/SystemNotificationHelper.kt | 6 +- .../extensions/AndroidContextExtensions.kt | 2 +- .../mantra}/android/MainActivity.kt | 12 +- .../mantra/android/MantraApplication.kt} | 4 +- .../mantra}/compose/AppVersion.android.kt | 4 +- .../mantra}/compose/Platform.android.kt | 2 +- .../compose/PlatformContext.android.kt | 2 +- .../PlatformDatabaseBuilder.android.kt | 6 +- .../compose/extensions/Phoenix.android.kt | 8 +- .../ui/composable/widgets/nfc/HceMonitor.kt | 2 +- .../widgets/nfc/NfcReaderMonitor.kt | 2 +- .../ui/composable/widgets/nfc/NfcState.kt | 0 .../mantra}/compose/ui/theme/Theme.android.kt | 2 +- .../view/model/NavigationViewModel.android.kt | 12 +- .../res/drawable/ic_launcher_foreground.xml | 24 +- .../res/drawable/ic_launcher_monochrome.xml | 24 +- .../res/mipmap-hdpi/ic_launcher.webp | Bin 782 -> 982 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 2036 -> 2176 bytes .../res/mipmap-mdpi/ic_launcher.webp | Bin 526 -> 636 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 1224 -> 1386 bytes .../res/mipmap-xhdpi/ic_launcher.webp | Bin 1066 -> 1258 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 2980 -> 3166 bytes .../res/mipmap-xxhdpi/ic_launcher.webp | Bin 1838 -> 1918 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 4932 -> 4974 bytes .../res/mipmap-xxxhdpi/ic_launcher.webp | Bin 2792 -> 2750 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 7468 -> 7176 bytes .../src/androidMain/res/values/strings.xml | 2 +- .../kotlin/at/torch/compose/Platform.kt | 7 - .../at/torch/compose/PlatformContext.kt | 3 - .../kotlin/at/torch/compose/TorchGlobal.kt | 5 - .../torch/compose/database/TorchDatabase.kt | 209 ------------------ .../builder/PlatformDatabaseBuilder.kt | 21 -- .../dao/BroadcastNostrEventReceiptDao.kt | 21 -- .../dao/ChatMessageNostrEventRelationDao.kt | 11 - .../database/dao/GiftWrapMessageDao.kt | 15 -- .../compose/database/dao/GiftWrapSealDao.kt | 15 -- .../database/dao/MarmotGroupEventDao.kt | 15 -- .../dao/NegentropySynchronizeResultDao.kt | 10 - .../database/dao/NostrEventRelayDao.kt | 12 - .../at/torch/compose/database/dao/PostDao.kt | 21 -- .../torch/compose/database/dao/ReactionDao.kt | 18 -- .../compose/database/dao/RecentSearchDao.kt | 22 -- .../at/torch/compose/database/dao/RelayDao.kt | 19 -- .../database/dao/RepostedRelationDao.kt | 20 -- .../dao/SynchronizeNostrEventResultDao.kt | 10 - .../LocalBroadcastNostrEventRequest.kt | 14 -- .../model/intermdiate/LocalChatMessage.kt | 34 --- .../database/model/typealiases/HexArray.kt | 4 - .../database/model/typealiases/KindArray.kt | 3 - .../typealiases/SynchronizationFilterArray.kt | 3 - .../repository/DatabasePostRepository.kt | 5 - .../repository/DatabaseSearchRepository.kt | 12 - .../GiftWrapImpersonationException.kt | 3 - .../GiftWrapPayloadUnsupportedException.kt | 3 - .../GiftWrapSealDecryptionException.kt | 3 - .../exceptions/GiftWrapUnsealException.kt | 3 - .../InvalidNostrPrivateKeyException.kt | 3 - .../compose/exceptions/SignatureException.kt | 3 - .../exceptions/SigningRejectedException.kt | 3 - .../compose/managers/AuxDatabaseManager.kt | 26 --- .../repository/CachingImportRepository.kt | 40 ---- .../compose/repository/PostRepository.kt | 3 - .../routes/AuthenticatedProfileRoute.kt | 6 - .../navigation/routes/BlankRoute.kt | 6 - .../navigation/routes/LandingRoute.kt | 6 - .../ui/composable/navigation/routes/Route.kt | 3 - .../navigation/routes/SignInRoute.kt | 6 - .../routes/SovereignWalletStartupRoute.kt | 6 - .../ui/view/state/WriteNewNoteUIState.kt | 24 -- .../fr/acinq/phoenix/data/AppConfiguration.kt | 14 +- .../fr/acinq/phoenix/data/WalletPayment.kt | 16 +- .../mantra}/compose/AppVersion.kt | 2 +- .../mantra/compose/MantraApp.kt} | 14 +- .../press/mantra/compose/MantraGlobal.kt | 5 + .../kotlin/press/mantra/compose/Platform.kt | 7 + .../press/mantra/compose/PlatformContext.kt | 3 + .../compose/cryptography/Extensions.kt | 8 +- .../mantra/compose/database/TorchDatabase.kt | 209 ++++++++++++++++++ .../database/TorchDatabaseConstructor.kt | 2 +- .../builder/PlatformDatabaseBuilder.kt | 21 ++ .../database/converters/TorchConverters.kt | 4 +- .../dao/BroadcastNostrEventReceiptDao.kt | 21 ++ .../dao/BroadcastNostrEventRequestDao.kt | 6 +- ...geBroadcastNostrEventReceiptRelationDao.kt | 4 +- ...geBroadcastNostrEventRequestRelationDao.kt | 4 +- .../compose/database/dao/ChatMessageDao.kt | 10 +- .../dao/ChatMessageNostrEventRelationDao.kt | 11 + .../compose/database/dao/ChatRoomDao.kt | 6 +- .../compose/database/dao/ConnectionDao.kt | 12 +- .../database/dao/GiftWrapMessageDao.kt | 15 ++ .../database/dao/GiftWrapPayloadDao.kt | 4 +- .../compose/database/dao/GiftWrapSealDao.kt | 15 ++ .../database/dao/InReplyToRelationDao.kt | 10 +- .../database/dao/MarmotCommitResultDao.kt | 6 +- .../database/dao/MarmotGroupEventDao.kt | 12 + .../database/dao/MarmotInnerEventDao.kt | 4 +- .../database/dao/MarmotKeyPackageBundleDao.kt | 4 +- .../database/dao/MarmotKeyPackageDao.kt | 5 +- .../compose/database/dao/MarmotOutboundDao.kt | 42 ++-- .../dao/MarmotRetainedEpochSecretDao.kt | 4 +- .../compose/database/dao/MentionDao.kt | 6 +- .../dao/NegentropySynchronizeRequestDao.kt | 4 +- .../dao/NegentropySynchronizeResultDao.kt | 10 + .../mantra}/compose/database/dao/NostrDao.kt | 63 +++--- .../compose/database/dao/NostrEventDao.kt | 23 +- .../database/dao/NostrEventRelayDao.kt | 12 + .../compose/database/dao/NostrNip17Dao.kt | 28 +-- .../compose/database/dao/ParticipantDao.kt | 4 +- .../mantra/compose/database/dao/PostDao.kt | 21 ++ .../compose/database/dao/ProfileDao.kt | 12 +- .../compose/database/dao/QuotedRelationDao.kt | 10 +- .../compose/database/dao/ReactionDao.kt | 18 ++ .../compose/database/dao/RecentSearchDao.kt | 22 ++ .../mantra/compose/database/dao/RelayDao.kt | 19 ++ .../database/dao/RepostedRelationDao.kt | 20 ++ .../dao/SynchronizeNostrEventRequestDao.kt | 8 +- .../dao/SynchronizeNostrEventResultDao.kt | 10 + .../database/dao/UnsignedNostrEventDao.kt | 16 +- .../mantra}/compose/database/dao/ZapDao.kt | 4 +- .../model/BroadcastNostrEventReceipt.kt | 6 +- .../model/BroadcastNostrEventRequest.kt | 8 +- .../compose/database/model/ChatMessage.kt | 18 +- ...ssageBroadcastNostrEventReceiptRelation.kt | 6 +- ...ssageBroadcastNostrEventRequestRelation.kt | 6 +- .../model/ChatMessageNostrEventRelation.kt | 6 +- .../compose/database/model/ChatRoom.kt | 10 +- .../compose/database/model/Connection.kt | 12 +- .../compose/database/model/GiftWrapMessage.kt | 12 +- .../compose/database/model/GiftWrapPayload.kt | 10 +- .../compose/database/model/GiftWrapSeal.kt | 10 +- .../database/model/InReplyToRelation.kt | 10 +- .../database/model/MarmotCommitResult.kt | 28 +-- .../database/model/MarmotGroupEvent.kt | 18 +- .../database/model/MarmotInnerEvent.kt | 24 +- .../database/model/MarmotKeyPackage.kt | 10 +- .../database/model/MarmotKeyPackageBundle.kt | 11 +- .../model/MarmotRetainedEpochSecret.kt | 8 +- .../mantra}/compose/database/model/Mention.kt | 10 +- .../model/NegentropySynchronizeRequest.kt | 12 +- .../model/NegentropySynchronizeResult.kt | 4 +- .../compose/database/model/NostrEvent.kt | 17 +- .../compose/database/model/NostrEventRelay.kt | 6 +- .../compose/database/model/Participant.kt | 10 +- .../mantra}/compose/database/model/Post.kt | 18 +- .../mantra}/compose/database/model/Profile.kt | 27 +-- .../compose/database/model/QuotedRelation.kt | 12 +- .../compose/database/model/Reaction.kt | 18 +- .../compose/database/model/RecentSearch.kt | 6 +- .../mantra}/compose/database/model/Relay.kt | 2 +- .../database/model/RepostedRelation.kt | 12 +- .../model/SynchronizeNostrEventRequest.kt | 10 +- .../model/SynchronizeNostrEventResult.kt | 6 +- .../database/model/UnsignedNostrEvent.kt | 10 +- .../mantra}/compose/database/model/Zap.kt | 14 +- .../model/intermdiate/LocalAccount.kt | 14 +- .../LocalBroadcastNostrEventRequest.kt | 14 ++ .../model/intermdiate/LocalChatMessage.kt | 34 +++ .../model/intermdiate/LocalChatRoom.kt | 8 +- .../intermdiate/LocalInReplyToNostrEvent.kt | 15 +- .../model/intermdiate/LocalMention.kt | 6 +- .../model/intermdiate/LocalNostrEvent.kt | 22 +- .../model/intermdiate/LocalParticipant.kt | 6 +- .../database/model/intermdiate/LocalPost.kt | 6 +- .../model/intermdiate/LocalProfile.kt | 6 +- .../intermdiate/LocalProfileWithFollowers.kt | 10 +- .../intermdiate/LocalProfileWithFollowing.kt | 10 +- .../intermdiate/LocalQuotedNostrEvent.kt | 32 +-- .../intermdiate/LocalRepostedNostrEvent.kt | 15 +- .../model/traits/BroadcastableEntity.kt | 2 +- .../database/model/traits/LocalStoreEntity.kt | 2 +- .../database/model/traits/NostrEventEntity.kt | 2 +- .../model/traits/OptionalNostrEventEntity.kt | 2 +- .../model/traits/ProfilePublicKeyEntity.kt | 2 +- .../database/model/traits/ReplyingToEntity.kt | 2 +- .../model/traits/SoftDeletableEntity.kt | 2 +- .../model/traits/TimestampedEntity.kt | 2 +- .../model/traits/UnsignedNostrEventEntity.kt | 2 +- .../model/traits/UserViewableEntity.kt | 2 +- .../database/model/typealiases/HexArray.kt | 4 + .../database/model/typealiases/KindArray.kt | 3 + .../typealiases/SynchronizationFilterArray.kt | 3 + .../model/types/SynchronizationFilter.kt | 2 +- .../repository/DatabaseChatRepository.kt | 26 +-- .../repository/DatabaseMarmotRepository.kt | 16 +- .../repository/DatabaseNostrRepository.kt | 80 +++---- .../repository/DatabasePostRepository.kt | 5 + .../repository/DatabaseSearchRepository.kt | 12 + .../GiftWrapImpersonationException.kt | 3 + .../GiftWrapPayloadUnsupportedException.kt | 3 + .../GiftWrapSealDecryptionException.kt | 3 + .../exceptions/GiftWrapUnsealException.kt | 3 + .../InvalidNostrPrivateKeyException.kt | 3 + .../MarmotMissingChatGroupException.kt | 2 +- .../MarmotMissingKeyPackageBundleException.kt | 2 +- ...MarmotMissingKeyPackageEventIdException.kt | 2 +- .../MarmotMissingNostrGroupDataExtension.kt | 2 +- ...MissingRetainedExporterSecretsException.kt | 2 +- .../MarmotNotMemberOfChatGroupException.kt | 2 +- .../MarmotUnprocessableInnerEventException.kt | 2 +- .../MarmotUnsupportedWireFormatException.kt | 2 +- ...eEventMissingKeyPackageEventIdException.kt | 2 +- ...MarmotWelcomeMismatchedGroupIdException.kt | 2 +- .../MarmotWelcomeMissingGroupIdException.kt | 2 +- .../compose/exceptions/NetworkException.kt | 2 +- .../exceptions/NostrNoticeException.kt | 2 +- .../exceptions/NostrPublishException.kt | 2 +- .../compose/exceptions/SignatureException.kt | 3 + .../exceptions/SigningKeyNotFoundException.kt | 2 +- .../exceptions/SigningRejectedException.kt | 3 + .../mantra}/compose/extensions/Credentials.kt | 4 +- .../mantra}/compose/extensions/Instant.kt | 2 +- .../compose/extensions/MlsGroupExtensions.kt | 2 +- .../mantra}/compose/extensions/Phoenix.kt | 2 +- .../compose/managers/AuxDatabaseManager.kt | 26 +++ .../compose/managers/MarmotInboundManager.kt | 16 +- .../mantra}/compose/network/UserAgent.kt | 2 +- .../mantra}/compose/network/dto/RelayDTO.kt | 4 +- .../compose/network/relays/FallbackRelays.kt | 4 +- .../network/relays/NostrPublishResult.kt | 4 +- .../compose/network/relays/RelayPool.kt | 60 ++--- .../network/relays/RelaysSocketManager.kt | 26 +-- .../broadcast/BroadcastEventResponse.kt | 2 +- .../relays/broadcast/BroadcastRequestBody.kt | 2 +- .../network/serialization/CommonJson.kt | 2 +- .../network/serialization/SocketsJson.kt | 4 +- .../network/sockets/NostrIncomingMessage.kt | 10 +- .../sockets/NostrIncomingMessageExt.kt | 2 +- .../sockets/NostrIncomingMessageParser.kt | 12 +- .../sockets/NostrOutgoingMessageBuilder.kt | 2 +- .../network/sockets/NostrSocketClient.kt | 2 +- .../sockets/NostrSocketClientFactory.kt | 2 +- .../network/sockets/NostrSocketClientImpl.kt | 4 +- .../compose/network/sockets/NostrVerb.kt | 2 +- .../sockets/SocketConnectionCallbacks.kt | 2 +- .../mantra}/compose/nostr/Relays.kt | 2 +- .../repository/CachingImportRepository.kt | 40 ++++ .../compose/repository/ChatRepository.kt | 14 +- .../compose/repository/MarmotRepository.kt | 6 +- .../repository/NostrNotaryRepository.kt | 36 +-- .../repository/NostrPublisherRepository.kt | 22 +- .../compose/repository/NostrRepository.kt | 38 ++-- .../compose/repository/PostRepository.kt | 3 + .../compose/repository/RelayRepository.kt | 4 +- .../compose/repository/SearchRepository.kt | 6 +- .../mantra}/compose/ui/BlurHashDecoder.kt | 2 +- .../ui/composable/ActiveProfileScreen.kt | 32 ++- .../AddMemberToChatRoomConfirmationScreen.kt | 23 +- .../ui/composable/ChatRoomCreationScreen.kt | 12 +- .../ui/composable/ChatRoomDetailScreen.kt | 32 +-- .../ui/composable/ChatRoomMessagingScreen.kt | 27 ++- .../ui/composable/CreateProfileScreen.kt | 22 +- .../compose/ui/composable/HomeScreen.kt | 36 +-- .../composable/ImplementationPendingScreen.kt | 4 +- .../composable/KeyPackageManagementScreen.kt | 38 +--- .../compose/ui/composable/LandingScreen.kt | 4 +- .../compose/ui/composable/LoadingScreen.kt | 6 +- .../ui/composable/NostrEventDetailScreen.kt | 24 +- .../SearchMemberToAddToChatRoomScreen.kt | 26 +-- .../ui/composable/SearchResultScreen.kt | 24 +- .../compose/ui/composable/SearchScreen.kt | 22 +- .../ui/composable/ShareProfileScreen.kt | 34 ++- .../compose/ui/composable/SignInScreen.kt | 30 +-- .../ui/composable/SocialPreconditionScreen.kt | 4 +- .../SovereignWalletStartupScreen.kt | 22 +- .../ui/composable/UnannouncedProfileScreen.kt | 6 +- .../ui/composable/UnindexedProfileScreen.kt | 6 +- .../ui/composable/UnqueuedProfileScreen.kt | 6 +- .../UnqueuedProfileSynchronizationScreen.kt | 14 +- .../ui/composable/UnsignedProfileScreen.kt | 6 +- .../ui/composable/UnsyncedProfileScreen.kt | 6 +- .../ui/composable/WriteNewNoteScreen.kt | 60 ++--- .../composable/navigation/MantraNavHost.kt} | 142 ++++++------ .../navigation/routes/ActiveProfileRoute.kt | 2 +- .../AddMemberToChatRoomConfirmationRoute.kt | 2 +- .../routes/AuthenticatedProfileRoute.kt | 6 + .../navigation/routes/BlankRoute.kt | 6 + .../routes/ChatRoomCreationRoute.kt | 2 +- .../navigation/routes/ChatRoomDetailRoute.kt | 2 +- .../routes/ChatRoomMessagingRoute.kt | 2 +- .../navigation/routes/CreateProfileRoute.kt | 2 +- .../composable/navigation/routes/HomeRoute.kt | 2 +- .../routes/ImplementationPendingRoute.kt | 2 +- .../routes/KeyPackageManagementRoute.kt | 2 +- .../navigation/routes/LandingRoute.kt | 6 + .../navigation/routes/LoadingRoute.kt | 2 +- .../routes/NostrEventDetailRoute.kt | 2 +- .../ui/composable/navigation/routes/Route.kt | 3 + .../SearchMemberToAddToChatRoomRoute.kt | 2 +- .../navigation/routes/SearchResultRoute.kt | 2 +- .../navigation/routes/SearchRoute.kt | 2 +- .../navigation/routes/ShareProfileRoute.kt | 2 +- .../navigation/routes/SignInRoute.kt | 6 + .../routes/SocialPreconditionRoute.kt | 2 +- .../routes/SovereignWalletStartupRoute.kt | 6 + .../routes/UnannouncedProfileRoute.kt | 2 +- .../routes/UnindexedProfileRoute.kt | 2 +- .../navigation/routes/UnqueuedProfileRoute.kt | 2 +- .../UnqueuedProfileSynchronizationRoute.kt | 2 +- .../navigation/routes/UnsignedProfileRoute.kt | 2 +- .../navigation/routes/UnsyncedProfileRoute.kt | 2 +- .../navigation/routes/WriteNewNoteRoute.kt | 2 +- .../widgets/LoadingDataIndicator.kt | 4 +- .../ui/composable/widgets/QRCodeView.kt | 8 +- .../composable/widgets/buttons/Clickable.kt | 0 .../widgets/coil/forwardingPainter.kt | 2 +- .../composable/widgets/content/ArticleCard.kt | 6 +- .../composable/widgets/content/Constants.kt | 2 +- .../widgets/content/ContentParser.kt | 2 +- .../widgets/content/ContentSegment.kt | 2 +- .../widgets/content/FullScreenImageViewer.kt | 2 +- .../ui/composable/widgets/content/Helpers.kt | 4 +- .../widgets/content/ImageWithContextMenu.kt | 2 +- .../widgets/content/InvoicePayState.kt | 2 +- .../widgets/content/LightningInvoiceCard.kt | 2 +- .../composable/widgets/content/LinkPreview.kt | 2 +- .../widgets/content/LiveStreamCard.kt | 4 +- .../widgets/content/LiveStreamCardContent.kt | 8 +- .../widgets/content/LoadingAsyncImage.kt | 2 +- .../composable/widgets/content/MediaMeta.kt | 2 +- .../composable/widgets/content/NoteActions.kt | 4 +- .../ui/composable/widgets/content/OgData.kt | 2 +- .../widgets/content/QuotedAddressableNote.kt | 4 +- .../composable/widgets/content/QuotedNote.kt | 14 +- .../composable/widgets/content/RichContent.kt | 28 +-- .../widgets/content/UnsupportedKindBadge.kt | 2 +- .../widgets/detail/MetadataEventDetail.kt | 26 +-- .../widgets/detail/TextNoteEventDetail.kt | 38 ++-- .../widgets/dialogs/BottomSheetDialog.kt | 2 +- .../dialogs/NewChatBottomSheetDialog.kt | 5 +- .../StartDirectMessageToNpubOrNip05Dialog.kt | 12 +- .../composable/widgets/feed/EventListView.kt | 40 ++-- .../widgets/feed/TextNoteFeedItem.kt | 70 +++--- .../widgets/profile/ProfileAvatar.kt | 16 +- .../widgets/profile/ProfileColor.kt | 4 +- .../composable/widgets/wallet/WalletAvatar.kt | 4 +- .../widgets/wallet/WalletsSelector.kt | 4 +- .../mantra}/compose/ui/theme/Color.kt | 2 +- .../mantra}/compose/ui/theme/Theme.kt | 2 +- .../mantra}/compose/ui/theme/Type.kt | 0 .../ui/view/model/ActiveProfileViewModel.kt | 18 +- ...ddMemberToChatRoomConfirmationViewModel.kt | 13 +- .../ui/view/model/ChatMessageListViewModel.kt | 20 +- .../view/model/ChatRoomCreationViewModel.kt | 18 +- .../ui/view/model/ChatRoomDetailViewModel.kt | 14 +- .../ui/view/model/ChatRoomListViewModel.kt | 18 +- .../view/model/ChatRoomMessagingViewModel.kt | 21 +- .../ui/view/model/CreateProfileViewModel.kt | 10 +- .../ui/view/model/FeedListViewModel.kt | 22 +- .../ui/view/model/FollowersListViewModel.kt | 32 +-- .../ui/view/model/FollowingListViewModel.kt | 32 +-- .../compose/ui/view/model/HomeViewModel.kt | 13 +- .../ui/view/model/InReplyToViewModel.kt | 44 ++-- .../model/KeyPackageManagementViewModel.kt | 8 +- .../model/MetadataEventDetailViewModel.kt | 48 ++-- .../ui/view/model/NavigationViewModel.kt | 12 +- .../view/model/NostrEventDetailViewModel.kt | 24 +- .../compose/ui/view/model/NotaryViewModel.kt | 16 +- .../SearchMemberToAddToChatRoomViewModel.kt | 16 +- .../ui/view/model/SearchResultViewModel.kt | 23 +- .../compose/ui/view/model/SearchViewModel.kt | 24 +- .../ui/view/model/ShareProfileViewModel.kt | 14 +- .../ui/view/model/SignInToProfileViewModel.kt | 16 +- .../model/SovereignWalletStartupViewModel.kt | 8 +- .../ui/view/model/SovereignWalletViewModel.kt | 14 +- .../ui/view/model/SynchronizationViewModel.kt | 26 +-- ...UnqueuedProfileSynchronizationViewModel.kt | 12 +- .../ui/view/model/WriteNewNoteViewModel.kt | 42 ++-- .../ui/view/state/ActiveProfileUIState.kt | 4 +- .../AddMemberToChatRoomConfirmationUIState.kt | 9 +- .../ui/view/state/ChatMessageListUIState.kt | 4 +- .../ui/view/state/ChatRoomDetailUIState.kt | 4 +- .../ui/view/state/ChatRoomListUIState.kt | 4 +- .../ui/view/state/ChatRoomMessagingUIState.kt | 4 +- .../ui/view/state/CreateProfileUIState.kt | 4 +- .../compose/ui/view/state/FeedListUIState.kt | 4 +- .../ui/view/state/FollowersListUIState.kt | 4 +- .../ui/view/state/FollowingListUIState.kt | 4 +- .../ui/view/state/HomeScreenUIState.kt | 4 +- .../view/state/KeyPackageManagementUIState.kt | 4 +- .../view/state/MetadataEventDetailUIState.kt | 6 +- .../ui/view/state/NavigationUIState.kt | 14 +- .../ui/view/state/NostrEventDetailUIState.kt | 4 +- .../SearchMemberToAddToChatRoomUIState.kt | 6 +- .../ui/view/state/SearchResultListUIState.kt | 4 +- .../compose/ui/view/state/SearchUIState.kt | 4 +- .../ui/view/state/ShareProfileUIState.kt | 4 +- .../ui/view/state/SignInToProfileUIState.kt | 2 +- .../ui/view/state/SovereignWalletUIState.kt | 2 +- .../ui/view/state/WriteNewNoteUIState.kt | 24 ++ .../state/form/ChatRoomCreationFormState.kt | 2 +- .../view/state/form/CreateProfileFormState.kt | 2 +- .../state/form/SignInToProfileFormState.kt | 2 +- .../ui/view/state/form/TextFieldForm.kt | 2 +- .../view/state/form/WriteNewNoteFormState.kt | 2 +- .../auxiliary/compose/ComposeAppCommonTest.kt | 2 +- .../at/torch/compose/PlatformContext.ios.kt | 3 - .../mantra}/compose/AppVersion.ios.kt | 2 +- .../mantra}/compose/MainViewController.kt | 6 +- .../mantra}/compose/Platform.ios.kt | 2 +- .../mantra/compose/PlatformContext.ios.kt | 3 + .../builder/PlatformDatabaseBuilder.ios.kt | 6 +- .../mantra}/compose/extensions/Phoenix.ios.kt | 2 +- .../mantra}/compose/ui/theme/Theme.ios.kt | 2 +- .../ui/view/model/NavigationViewModel.ios.kt | 4 +- settings.gradle.kts | 2 +- 415 files changed, 2289 insertions(+), 2378 deletions(-) rename composeApp/src/androidMain/kotlin/{at/torch => press/mantra}/android/MainActivity.kt (87%) rename composeApp/src/androidMain/kotlin/{at/torch/android/TorchApplication.kt => press/mantra/android/MantraApplication.kt} (92%) rename composeApp/src/androidMain/kotlin/{at/torch => press/mantra}/compose/AppVersion.android.kt (73%) rename composeApp/src/androidMain/kotlin/{at/torch => press/mantra}/compose/Platform.android.kt (61%) rename composeApp/src/androidMain/kotlin/{at/torch => press/mantra}/compose/PlatformContext.android.kt (76%) rename composeApp/src/androidMain/kotlin/{at/torch => press/mantra}/compose/database/builder/PlatformDatabaseBuilder.android.kt (82%) rename composeApp/src/androidMain/kotlin/{at/torch => press/mantra}/compose/extensions/Phoenix.android.kt (89%) rename composeApp/src/androidMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/nfc/HceMonitor.kt (97%) rename composeApp/src/androidMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/nfc/NfcReaderMonitor.kt (97%) rename composeApp/src/androidMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/nfc/NfcState.kt (100%) rename composeApp/src/androidMain/kotlin/{at/torch => press/mantra}/compose/ui/theme/Theme.android.kt (95%) rename composeApp/src/androidMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/NavigationViewModel.android.kt (96%) delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/Platform.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/PlatformContext.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/TorchGlobal.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/database/TorchDatabase.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/database/builder/PlatformDatabaseBuilder.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/BroadcastNostrEventReceiptDao.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ChatMessageNostrEventRelationDao.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/GiftWrapMessageDao.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/GiftWrapSealDao.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MarmotGroupEventDao.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/NegentropySynchronizeResultDao.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/NostrEventRelayDao.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/PostDao.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ReactionDao.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/RecentSearchDao.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/RelayDao.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/RepostedRelationDao.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/SynchronizeNostrEventResultDao.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalBroadcastNostrEventRequest.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalChatMessage.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/database/model/typealiases/HexArray.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/database/model/typealiases/KindArray.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/database/model/typealiases/SynchronizationFilterArray.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/database/repository/DatabasePostRepository.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/database/repository/DatabaseSearchRepository.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/GiftWrapImpersonationException.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/GiftWrapPayloadUnsupportedException.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/GiftWrapSealDecryptionException.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/GiftWrapUnsealException.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/InvalidNostrPrivateKeyException.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/SignatureException.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/SigningRejectedException.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/managers/AuxDatabaseManager.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/repository/CachingImportRepository.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/repository/PostRepository.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/AuthenticatedProfileRoute.kt delete mode 100755 composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/BlankRoute.kt delete mode 100755 composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/LandingRoute.kt delete mode 100755 composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/Route.kt delete mode 100755 composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/SignInRoute.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/SovereignWalletStartupRoute.kt delete mode 100644 composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/WriteNewNoteUIState.kt rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/AppVersion.kt (80%) rename composeApp/src/commonMain/kotlin/{at/torch/compose/TorchApp.kt => press/mantra/compose/MantraApp.kt} (68%) create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/MantraGlobal.kt create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/Platform.kt create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/PlatformContext.kt rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/cryptography/Extensions.kt (78%) create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/database/TorchDatabase.kt rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/TorchDatabaseConstructor.kt (85%) create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/database/builder/PlatformDatabaseBuilder.kt rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/converters/TorchConverters.kt (96%) create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/BroadcastNostrEventReceiptDao.kt rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/dao/BroadcastNostrEventRequestDao.kt (86%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/dao/ChatMessageBroadcastNostrEventReceiptRelationDao.kt (60%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/dao/ChatMessageBroadcastNostrEventRequestRelationDao.kt (81%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/dao/ChatMessageDao.kt (77%) create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ChatMessageNostrEventRelationDao.kt rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/dao/ChatRoomDao.kt (84%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/dao/ConnectionDao.kt (56%) create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/GiftWrapMessageDao.kt rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/dao/GiftWrapPayloadDao.kt (85%) create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/GiftWrapSealDao.kt rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/dao/InReplyToRelationDao.kt (58%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/dao/MarmotCommitResultDao.kt (68%) create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MarmotGroupEventDao.kt rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/dao/MarmotInnerEventDao.kt (80%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/dao/MarmotKeyPackageBundleDao.kt (90%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/dao/MarmotKeyPackageDao.kt (82%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/dao/MarmotOutboundDao.kt (93%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/dao/MarmotRetainedEpochSecretDao.kt (89%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/dao/MentionDao.kt (54%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/dao/NegentropySynchronizeRequestDao.kt (90%) create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/NegentropySynchronizeResultDao.kt rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/dao/NostrDao.kt (96%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/dao/NostrEventDao.kt (85%) create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/NostrEventRelayDao.kt rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/dao/NostrNip17Dao.kt (90%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/dao/ParticipantDao.kt (86%) create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/PostDao.kt rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/dao/ProfileDao.kt (82%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/dao/QuotedRelationDao.kt (59%) create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ReactionDao.kt create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/RecentSearchDao.kt create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/RelayDao.kt create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/RepostedRelationDao.kt rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/dao/SynchronizeNostrEventRequestDao.kt (65%) create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/SynchronizeNostrEventResultDao.kt rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/dao/UnsignedNostrEventDao.kt (52%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/dao/ZapDao.kt (75%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/BroadcastNostrEventReceipt.kt (85%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/BroadcastNostrEventRequest.kt (82%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/ChatMessage.kt (94%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/ChatMessageBroadcastNostrEventReceiptRelation.kt (84%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/ChatMessageBroadcastNostrEventRequestRelation.kt (85%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/ChatMessageNostrEventRelation.kt (84%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/ChatRoom.kt (93%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/Connection.kt (75%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/GiftWrapMessage.kt (92%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/GiftWrapPayload.kt (93%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/GiftWrapSeal.kt (93%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/InReplyToRelation.kt (86%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/MarmotCommitResult.kt (76%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/MarmotGroupEvent.kt (61%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/MarmotInnerEvent.kt (80%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/MarmotKeyPackage.kt (86%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/MarmotKeyPackageBundle.kt (90%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/MarmotRetainedEpochSecret.kt (75%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/Mention.kt (79%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/NegentropySynchronizeRequest.kt (84%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/NegentropySynchronizeResult.kt (88%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/NostrEvent.kt (96%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/NostrEventRelay.kt (78%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/Participant.kt (88%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/Post.kt (77%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/Profile.kt (85%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/QuotedRelation.kt (79%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/Reaction.kt (73%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/RecentSearch.kt (82%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/Relay.kt (83%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/RepostedRelation.kt (79%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/SynchronizeNostrEventRequest.kt (87%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/SynchronizeNostrEventResult.kt (79%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/UnsignedNostrEvent.kt (87%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/Zap.kt (81%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/intermdiate/LocalAccount.kt (50%) create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalBroadcastNostrEventRequest.kt create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalChatMessage.kt rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/intermdiate/LocalChatRoom.kt (89%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/intermdiate/LocalInReplyToNostrEvent.kt (84%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/intermdiate/LocalMention.kt (51%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/intermdiate/LocalNostrEvent.kt (81%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/intermdiate/LocalParticipant.kt (50%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/intermdiate/LocalPost.kt (61%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/intermdiate/LocalProfile.kt (61%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/intermdiate/LocalProfileWithFollowers.kt (58%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/intermdiate/LocalProfileWithFollowing.kt (58%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/intermdiate/LocalQuotedNostrEvent.kt (80%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/intermdiate/LocalRepostedNostrEvent.kt (84%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/traits/BroadcastableEntity.kt (64%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/traits/LocalStoreEntity.kt (61%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/traits/NostrEventEntity.kt (68%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/traits/OptionalNostrEventEntity.kt (70%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/traits/ProfilePublicKeyEntity.kt (70%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/traits/ReplyingToEntity.kt (68%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/traits/SoftDeletableEntity.kt (63%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/traits/TimestampedEntity.kt (68%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/traits/UnsignedNostrEventEntity.kt (58%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/traits/UserViewableEntity.kt (62%) create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/typealiases/HexArray.kt create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/typealiases/KindArray.kt create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/typealiases/SynchronizationFilterArray.kt rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/model/types/SynchronizationFilter.kt (97%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/repository/DatabaseChatRepository.kt (95%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/repository/DatabaseMarmotRepository.kt (95%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/database/repository/DatabaseNostrRepository.kt (90%) create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/database/repository/DatabasePostRepository.kt create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/database/repository/DatabaseSearchRepository.kt create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/GiftWrapImpersonationException.kt create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/GiftWrapPayloadUnsupportedException.kt create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/GiftWrapSealDecryptionException.kt create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/GiftWrapUnsealException.kt create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/InvalidNostrPrivateKeyException.kt rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/exceptions/MarmotMissingChatGroupException.kt (74%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/exceptions/MarmotMissingKeyPackageBundleException.kt (75%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/exceptions/MarmotMissingKeyPackageEventIdException.kt (75%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/exceptions/MarmotMissingNostrGroupDataExtension.kt (75%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/exceptions/MarmotMissingRetainedExporterSecretsException.kt (75%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/exceptions/MarmotNotMemberOfChatGroupException.kt (75%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/exceptions/MarmotUnprocessableInnerEventException.kt (75%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/exceptions/MarmotUnsupportedWireFormatException.kt (75%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/exceptions/MarmotWelcomeEventMissingKeyPackageEventIdException.kt (77%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/exceptions/MarmotWelcomeMismatchedGroupIdException.kt (75%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/exceptions/MarmotWelcomeMissingGroupIdException.kt (75%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/exceptions/NetworkException.kt (52%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/exceptions/NostrNoticeException.kt (51%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/exceptions/NostrPublishException.kt (53%) create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/SignatureException.kt rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/exceptions/SigningKeyNotFoundException.kt (77%) create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/SigningRejectedException.kt rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/extensions/Credentials.kt (93%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/extensions/Instant.kt (94%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/extensions/MlsGroupExtensions.kt (80%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/extensions/Phoenix.kt (92%) create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/managers/AuxDatabaseManager.kt rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/managers/MarmotInboundManager.kt (98%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/network/UserAgent.kt (81%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/network/dto/RelayDTO.kt (87%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/network/relays/FallbackRelays.kt (73%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/network/relays/NostrPublishResult.kt (56%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/network/relays/RelayPool.kt (77%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/network/relays/RelaysSocketManager.kt (80%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/network/relays/broadcast/BroadcastEventResponse.kt (81%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/network/relays/broadcast/BroadcastRequestBody.kt (79%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/network/serialization/CommonJson.kt (95%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/network/serialization/SocketsJson.kt (79%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/network/sockets/NostrIncomingMessage.kt (76%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/network/sockets/NostrIncomingMessageExt.kt (95%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/network/sockets/NostrIncomingMessageParser.kt (93%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/network/sockets/NostrOutgoingMessageBuilder.kt (96%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/network/sockets/NostrSocketClient.kt (94%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/network/sockets/NostrSocketClientFactory.kt (97%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/network/sockets/NostrSocketClientImpl.kt (98%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/network/sockets/NostrVerb.kt (95%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/network/sockets/SocketConnectionCallbacks.kt (76%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/nostr/Relays.kt (98%) create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/repository/CachingImportRepository.kt rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/repository/ChatRepository.kt (93%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/repository/MarmotRepository.kt (93%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/repository/NostrNotaryRepository.kt (67%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/repository/NostrPublisherRepository.kt (69%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/repository/NostrRepository.kt (89%) create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/repository/PostRepository.kt rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/repository/RelayRepository.kt (59%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/repository/SearchRepository.kt (55%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/BlurHashDecoder.kt (99%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/ActiveProfileScreen.kt (93%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/AddMemberToChatRoomConfirmationScreen.kt (93%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/ChatRoomCreationScreen.kt (95%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/ChatRoomDetailScreen.kt (93%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/ChatRoomMessagingScreen.kt (93%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/CreateProfileScreen.kt (95%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/HomeScreen.kt (91%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/ImplementationPendingScreen.kt (92%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/KeyPackageManagementScreen.kt (86%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/LandingScreen.kt (96%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/LoadingScreen.kt (80%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/NostrEventDetailScreen.kt (90%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/SearchMemberToAddToChatRoomScreen.kt (92%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/SearchResultScreen.kt (93%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/SearchScreen.kt (96%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/ShareProfileScreen.kt (89%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/SignInScreen.kt (87%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/SocialPreconditionScreen.kt (97%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/SovereignWalletStartupScreen.kt (93%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/UnannouncedProfileScreen.kt (92%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/UnindexedProfileScreen.kt (92%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/UnqueuedProfileScreen.kt (92%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/UnqueuedProfileSynchronizationScreen.kt (82%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/UnsignedProfileScreen.kt (91%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/UnsyncedProfileScreen.kt (92%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/WriteNewNoteScreen.kt (89%) rename composeApp/src/commonMain/kotlin/{at/torch/compose/ui/composable/navigation/TorchNavHost.kt => press/mantra/compose/ui/composable/navigation/MantraNavHost.kt} (83%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/navigation/routes/ActiveProfileRoute.kt (68%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/navigation/routes/AddMemberToChatRoomConfirmationRoute.kt (81%) create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/AuthenticatedProfileRoute.kt create mode 100755 composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/BlankRoute.kt rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/navigation/routes/ChatRoomCreationRoute.kt (64%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/navigation/routes/ChatRoomDetailRoute.kt (75%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/navigation/routes/ChatRoomMessagingRoute.kt (75%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/navigation/routes/CreateProfileRoute.kt (64%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/navigation/routes/HomeRoute.kt (62%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/navigation/routes/ImplementationPendingRoute.kt (62%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/navigation/routes/KeyPackageManagementRoute.kt (69%) create mode 100755 composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/LandingRoute.kt rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/navigation/routes/LoadingRoute.kt (61%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/navigation/routes/NostrEventDetailRoute.kt (69%) create mode 100755 composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/Route.kt rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/navigation/routes/SearchMemberToAddToChatRoomRoute.kt (76%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/navigation/routes/SearchResultRoute.kt (67%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/navigation/routes/SearchRoute.kt (62%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/navigation/routes/ShareProfileRoute.kt (68%) create mode 100755 composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/SignInRoute.kt rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/navigation/routes/SocialPreconditionRoute.kt (64%) create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/SovereignWalletStartupRoute.kt rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/navigation/routes/UnannouncedProfileRoute.kt (63%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/navigation/routes/UnindexedProfileRoute.kt (63%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/navigation/routes/UnqueuedProfileRoute.kt (63%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/navigation/routes/UnqueuedProfileSynchronizationRoute.kt (70%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/navigation/routes/UnsignedProfileRoute.kt (64%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/navigation/routes/UnsyncedProfileRoute.kt (62%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/navigation/routes/WriteNewNoteRoute.kt (74%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/LoadingDataIndicator.kt (93%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/QRCodeView.kt (92%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/buttons/Clickable.kt (100%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/coil/forwardingPainter.kt (96%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/content/ArticleCard.kt (96%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/content/Constants.kt (97%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/content/ContentParser.kt (99%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/content/ContentSegment.kt (98%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/content/FullScreenImageViewer.kt (98%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/content/Helpers.kt (97%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/content/ImageWithContextMenu.kt (98%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/content/InvoicePayState.kt (54%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/content/LightningInvoiceCard.kt (99%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/content/LinkPreview.kt (98%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/content/LiveStreamCard.kt (94%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/content/LiveStreamCardContent.kt (95%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/content/LoadingAsyncImage.kt (97%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/content/MediaMeta.kt (70%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/content/NoteActions.kt (93%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/content/OgData.kt (69%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/content/QuotedAddressableNote.kt (93%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/content/QuotedNote.kt (89%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/content/RichContent.kt (94%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/content/UnsupportedKindBadge.kt (95%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/detail/MetadataEventDetail.kt (94%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/detail/TextNoteEventDetail.kt (90%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/dialogs/BottomSheetDialog.kt (98%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/dialogs/NewChatBottomSheetDialog.kt (95%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/dialogs/StartDirectMessageToNpubOrNip05Dialog.kt (94%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/feed/EventListView.kt (81%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/feed/TextNoteFeedItem.kt (80%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/profile/ProfileAvatar.kt (83%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/profile/ProfileColor.kt (76%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/wallet/WalletAvatar.kt (97%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/composable/widgets/wallet/WalletsSelector.kt (97%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/theme/Color.kt (99%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/theme/Theme.kt (99%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/theme/Type.kt (100%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/ActiveProfileViewModel.kt (69%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/AddMemberToChatRoomConfirmationViewModel.kt (91%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/ChatMessageListViewModel.kt (97%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/ChatRoomCreationViewModel.kt (90%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/ChatRoomDetailViewModel.kt (90%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/ChatRoomListViewModel.kt (94%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/ChatRoomMessagingViewModel.kt (93%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/CreateProfileViewModel.kt (93%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/FeedListViewModel.kt (89%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/FollowersListViewModel.kt (81%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/FollowingListViewModel.kt (81%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/HomeViewModel.kt (81%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/InReplyToViewModel.kt (79%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/KeyPackageManagementViewModel.kt (91%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/MetadataEventDetailViewModel.kt (84%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/NavigationViewModel.kt (95%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/NostrEventDetailViewModel.kt (72%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/NotaryViewModel.kt (92%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/SearchMemberToAddToChatRoomViewModel.kt (90%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/SearchResultViewModel.kt (84%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/SearchViewModel.kt (67%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/ShareProfileViewModel.kt (86%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/SignInToProfileViewModel.kt (77%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/SovereignWalletStartupViewModel.kt (90%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/SovereignWalletViewModel.kt (94%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/SynchronizationViewModel.kt (96%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/UnqueuedProfileSynchronizationViewModel.kt (86%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/WriteNewNoteViewModel.kt (73%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/state/ActiveProfileUIState.kt (63%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/state/AddMemberToChatRoomConfirmationUIState.kt (59%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/state/ChatMessageListUIState.kt (68%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/state/ChatRoomDetailUIState.kt (70%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/state/ChatRoomListUIState.kt (57%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/state/ChatRoomMessagingUIState.kt (75%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/state/CreateProfileUIState.kt (76%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/state/FeedListUIState.kt (53%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/state/FollowersListUIState.kt (61%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/state/FollowingListUIState.kt (61%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/state/HomeScreenUIState.kt (53%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/state/KeyPackageManagementUIState.kt (75%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/state/MetadataEventDetailUIState.kt (51%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/state/NavigationUIState.kt (57%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/state/NostrEventDetailUIState.kt (64%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/state/SearchMemberToAddToChatRoomUIState.kt (68%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/state/SearchResultListUIState.kt (58%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/state/SearchUIState.kt (58%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/state/ShareProfileUIState.kt (62%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/state/SignInToProfileUIState.kt (90%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/state/SovereignWalletUIState.kt (88%) create mode 100644 composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/WriteNewNoteUIState.kt rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/state/form/ChatRoomCreationFormState.kt (75%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/state/form/CreateProfileFormState.kt (74%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/state/form/SignInToProfileFormState.kt (65%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/state/form/TextFieldForm.kt (86%) rename composeApp/src/commonMain/kotlin/{at/torch => press/mantra}/compose/ui/view/state/form/WriteNewNoteFormState.kt (65%) rename composeApp/src/commonTest/kotlin/{at => press}/auxiliary/compose/ComposeAppCommonTest.kt (82%) delete mode 100644 composeApp/src/iosMain/kotlin/at/torch/compose/PlatformContext.ios.kt rename composeApp/src/iosMain/kotlin/{at/torch => press/mantra}/compose/AppVersion.ios.kt (93%) rename composeApp/src/iosMain/kotlin/{at/torch => press/mantra}/compose/MainViewController.kt (85%) rename composeApp/src/iosMain/kotlin/{at/torch => press/mantra}/compose/Platform.ios.kt (72%) create mode 100644 composeApp/src/iosMain/kotlin/press/mantra/compose/PlatformContext.ios.kt rename composeApp/src/iosMain/kotlin/{at/torch => press/mantra}/compose/database/builder/PlatformDatabaseBuilder.ios.kt (88%) rename composeApp/src/iosMain/kotlin/{at/torch => press/mantra}/compose/extensions/Phoenix.ios.kt (96%) rename composeApp/src/iosMain/kotlin/{at/torch => press/mantra}/compose/ui/theme/Theme.ios.kt (89%) rename composeApp/src/iosMain/kotlin/{at/torch => press/mantra}/compose/ui/view/model/NavigationViewModel.ios.kt (98%) diff --git a/composeApp/build.gradle.kts b/composeApp/build.gradle.kts index d83e4e5e..e5e4f631 100644 --- a/composeApp/build.gradle.kts +++ b/composeApp/build.gradle.kts @@ -120,14 +120,14 @@ kotlin { } android { - namespace = "at.torch.android" + namespace = "press.mantra.android" compileSdk = libs.versions.android.compileSdk.get().toInt() buildFeatures { buildConfig = true } defaultConfig { - applicationId = "at.torch.android" + applicationId = "press.mantra.android" minSdk = libs.versions.android.minSdk.get().toInt() targetSdk = libs.versions.android.targetSdk.get().toInt() versionCode = 1 @@ -188,11 +188,11 @@ sqldelight { compose.desktop { application { - mainClass = "at.torch.desktop.MainKt" + mainClass = "press.mantra.desktop.MainKt" nativeDistributions { targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) - packageName = "at.torch.desktop" + packageName = "press.mantra.desktop" packageVersion = "1.0.0" } } diff --git a/composeApp/src/androidMain/AndroidManifest.xml b/composeApp/src/androidMain/AndroidManifest.xml index f9f8de1e..ed7fb888 100644 --- a/composeApp/src/androidMain/AndroidManifest.xml +++ b/composeApp/src/androidMain/AndroidManifest.xml @@ -7,7 +7,7 @@ + android:name="press.mantra.android.MainActivity"> diff --git a/composeApp/src/androidMain/ic_launcher-playstore.png b/composeApp/src/androidMain/ic_launcher-playstore.png index c498b37e0335f66a4b1d43c8893ff56798d93ff3..532908c1dc69993116d7891d3d1ba20fdb555e10 100644 GIT binary patch literal 18042 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 literal 28549 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 active businesses) */ private val _businessFlow = MutableStateFlow>(emptyMap()) diff --git a/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/android/services/ChannelsWatcher.kt b/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/android/services/ChannelsWatcher.kt index 4cfc3dae..4d005ac8 100644 --- a/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/android/services/ChannelsWatcher.kt +++ b/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/android/services/ChannelsWatcher.kt @@ -25,7 +25,7 @@ import androidx.work.Operation import androidx.work.PeriodicWorkRequest import androidx.work.WorkManager import androidx.work.WorkerParameters -import at.torch.android.BuildConfig +import press.mantra.android.BuildConfig import fr.acinq.lightning.channel.states.Closing import fr.acinq.lightning.utils.currentTimestampMillis import fr.acinq.phoenix.PhoenixGlobal diff --git a/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/android/services/ContactsPhotoCleaner.kt b/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/android/services/ContactsPhotoCleaner.kt index 4c460027..75cba8ac 100644 --- a/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/android/services/ContactsPhotoCleaner.kt +++ b/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/android/services/ContactsPhotoCleaner.kt @@ -24,7 +24,7 @@ import androidx.work.OneTimeWorkRequest import androidx.work.PeriodicWorkRequest import androidx.work.WorkManager import androidx.work.WorkerParameters -import at.torch.android.BuildConfig +import press.mantra.android.BuildConfig import fr.acinq.phoenix.PhoenixGlobal import fr.acinq.phoenix.android.BusinessManager import fr.acinq.phoenix.data.StartBusinessResult diff --git a/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/android/services/DailyConnect.kt b/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/android/services/DailyConnect.kt index 145def33..8f4c68a2 100644 --- a/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/android/services/DailyConnect.kt +++ b/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/android/services/DailyConnect.kt @@ -25,7 +25,7 @@ import androidx.work.Operation import androidx.work.PeriodicWorkRequest import androidx.work.WorkManager import androidx.work.WorkerParameters -import at.torch.android.BuildConfig +import press.mantra.android.BuildConfig import fr.acinq.lightning.utils.Connection import fr.acinq.phoenix.PhoenixGlobal import fr.acinq.phoenix.android.BusinessManager diff --git a/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/android/services/InflightPaymentsWatcher.kt b/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/android/services/InflightPaymentsWatcher.kt index 11191dd7..4d699378 100644 --- a/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/android/services/InflightPaymentsWatcher.kt +++ b/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/android/services/InflightPaymentsWatcher.kt @@ -26,8 +26,8 @@ import androidx.work.Operation import androidx.work.PeriodicWorkRequest import androidx.work.WorkManager import androidx.work.WorkerParameters -import at.torch.android.BuildConfig -import at.torch.android.TorchApplication +import press.mantra.android.BuildConfig +import press.mantra.android.MantraApplication import fr.acinq.lightning.channel.states.Syncing import fr.acinq.lightning.utils.Connection import fr.acinq.phoenix.PhoenixGlobal @@ -95,7 +95,7 @@ class InflightPaymentsWatcher(context: Context, workerParams: WorkerParameters) } val watchResult = userWallets.map { (walletId, wallet) -> - val walletMetadata = (applicationContext as TorchApplication).globalPrefs.getAvailableWalletsMeta.first().getByWalletIdOrDefault(walletId) + val walletMetadata = (applicationContext as MantraApplication).globalPrefs.getAvailableWalletsMeta.first().getByWalletIdOrDefault(walletId) watchWallet(walletId, walletMetadata, wallet.words) } diff --git a/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/android/services/PaymentsForegroundService.kt b/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/android/services/PaymentsForegroundService.kt index 311d2e0f..d7bb2096 100644 --- a/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/android/services/PaymentsForegroundService.kt +++ b/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/android/services/PaymentsForegroundService.kt @@ -5,8 +5,8 @@ import android.content.Intent import android.os.Handler import android.os.Looper import androidx.core.app.NotificationManagerCompat -import at.torch.android.BuildConfig -import at.torch.android.TorchApplication +import press.mantra.android.BuildConfig +import press.mantra.android.MantraApplication import fr.acinq.lightning.utils.Connection import fr.acinq.phoenix.PhoenixBusiness import fr.acinq.phoenix.PhoenixGlobal @@ -100,7 +100,7 @@ class PaymentsForegroundService : Service() { is DecryptSeedResult.Failure -> { log.info("unable to read seed, ignoring background message (reason=$reason)") serviceScope.launch { - val walletMetadataMap = (application as TorchApplication).globalPrefs.getAvailableWalletsMeta.first() + val walletMetadataMap = (application as MantraApplication).globalPrefs.getAvailableWalletsMeta.first() val metadata = walletMetadataMap.getByWalletIdOrDefault(walletId) when (reason) { "IncomingPayment" -> SystemNotificationHelper.notifyPaymentMissedAppUnavailable(applicationContext, metadata) diff --git a/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/utils/ContactsPhotoHelper.kt b/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/utils/ContactsPhotoHelper.kt index 27842d52..734d7de0 100644 --- a/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/utils/ContactsPhotoHelper.kt +++ b/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/utils/ContactsPhotoHelper.kt @@ -9,7 +9,7 @@ import android.net.Uri import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.graphics.asImageBitmap import androidx.core.content.FileProvider -import at.torch.android.BuildConfig +import press.mantra.android.BuildConfig import fr.acinq.lightning.utils.currentTimestampMillis import org.slf4j.LoggerFactory import java.io.File diff --git a/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/utils/SystemNotificationHelper.kt b/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/utils/SystemNotificationHelper.kt index 9a2881d6..d0dfcf10 100644 --- a/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/utils/SystemNotificationHelper.kt +++ b/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/utils/SystemNotificationHelper.kt @@ -30,9 +30,9 @@ import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat import androidx.core.app.TaskStackBuilder import androidx.core.net.toUri -import at.torch.android.BuildConfig -import at.torch.android.MainActivity -import at.torch.android.R +import press.mantra.android.BuildConfig +import press.mantra.android.MainActivity +import press.mantra.android.R import fr.acinq.bitcoin.Satoshi import fr.acinq.lightning.LiquidityEvents import fr.acinq.lightning.MilliSatoshi diff --git a/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/utils/extensions/AndroidContextExtensions.kt b/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/utils/extensions/AndroidContextExtensions.kt index a85e76a9..d21867fe 100644 --- a/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/utils/extensions/AndroidContextExtensions.kt +++ b/composeApp/src/androidMain/kotlin/fr/acinq/phoenix/utils/extensions/AndroidContextExtensions.kt @@ -18,7 +18,7 @@ package fr.acinq.phoenix.utils.extensions import android.content.Context import android.content.ContextWrapper -import at.torch.android.MainActivity +import press.mantra.android.MainActivity fun Context.findActivitySafe(): MainActivity? { var context = this diff --git a/composeApp/src/androidMain/kotlin/at/torch/android/MainActivity.kt b/composeApp/src/androidMain/kotlin/press/mantra/android/MainActivity.kt similarity index 87% rename from composeApp/src/androidMain/kotlin/at/torch/android/MainActivity.kt rename to composeApp/src/androidMain/kotlin/press/mantra/android/MainActivity.kt index d9811fb2..43f8a75f 100644 --- a/composeApp/src/androidMain/kotlin/at/torch/android/MainActivity.kt +++ b/composeApp/src/androidMain/kotlin/press/mantra/android/MainActivity.kt @@ -1,4 +1,4 @@ -package at.torch.android +package press.mantra.android import android.content.Intent import android.nfc.NfcAdapter @@ -7,9 +7,9 @@ import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.navigation.compose.rememberNavController -import at.torch.compose.PlatformContext -import at.torch.compose.TorchApp -import at.torch.compose.TorchGlobal +import press.mantra.compose.PlatformContext +import press.mantra.compose.MantraApp +import press.mantra.compose.MantraGlobal import fr.acinq.phoenix.PhoenixGlobal import fr.acinq.phoenix.android.services.HceService @@ -24,9 +24,9 @@ class MainActivity : ComponentActivity() { setContent { val navController = rememberNavController() - TorchApp( + MantraApp( navController = navController, - torchGlobal = TorchGlobal( + mantraGlobal = MantraGlobal( platformContext = PlatformContext( applicationContext = applicationContext ) diff --git a/composeApp/src/androidMain/kotlin/at/torch/android/TorchApplication.kt b/composeApp/src/androidMain/kotlin/press/mantra/android/MantraApplication.kt similarity index 92% rename from composeApp/src/androidMain/kotlin/at/torch/android/TorchApplication.kt rename to composeApp/src/androidMain/kotlin/press/mantra/android/MantraApplication.kt index fcece408..53eec311 100644 --- a/composeApp/src/androidMain/kotlin/at/torch/android/TorchApplication.kt +++ b/composeApp/src/androidMain/kotlin/press/mantra/android/MantraApplication.kt @@ -1,4 +1,4 @@ -package at.torch.android +package press.mantra.android import android.app.Application import android.content.Context @@ -13,7 +13,7 @@ import fr.acinq.phoenix.utils.preferences.GlobalPrefs /** This datastore persists preferences across node ids. */ val Context.globalPrefs: DataStore by preferencesDataStore(name = "globalprefs") -class TorchApplication: Application() { +class MantraApplication: Application() { lateinit var globalPrefs: GlobalPrefs lateinit var phoenixGlobal: PhoenixGlobal diff --git a/composeApp/src/androidMain/kotlin/at/torch/compose/AppVersion.android.kt b/composeApp/src/androidMain/kotlin/press/mantra/compose/AppVersion.android.kt similarity index 73% rename from composeApp/src/androidMain/kotlin/at/torch/compose/AppVersion.android.kt rename to composeApp/src/androidMain/kotlin/press/mantra/compose/AppVersion.android.kt index 1496b4d2..fefe5316 100644 --- a/composeApp/src/androidMain/kotlin/at/torch/compose/AppVersion.android.kt +++ b/composeApp/src/androidMain/kotlin/press/mantra/compose/AppVersion.android.kt @@ -1,6 +1,6 @@ -package at.torch.compose +package press.mantra.compose -import at.torch.android.BuildConfig +import press.mantra.android.BuildConfig actual object AppVersion { actual val versionName: String diff --git a/composeApp/src/androidMain/kotlin/at/torch/compose/Platform.android.kt b/composeApp/src/androidMain/kotlin/press/mantra/compose/Platform.android.kt similarity index 61% rename from composeApp/src/androidMain/kotlin/at/torch/compose/Platform.android.kt rename to composeApp/src/androidMain/kotlin/press/mantra/compose/Platform.android.kt index 4fed6e9a..c46496bc 100644 --- a/composeApp/src/androidMain/kotlin/at/torch/compose/Platform.android.kt +++ b/composeApp/src/androidMain/kotlin/press/mantra/compose/Platform.android.kt @@ -1,4 +1,4 @@ -package at.torch.compose +package press.mantra.compose import android.os.Build diff --git a/composeApp/src/androidMain/kotlin/at/torch/compose/PlatformContext.android.kt b/composeApp/src/androidMain/kotlin/press/mantra/compose/PlatformContext.android.kt similarity index 76% rename from composeApp/src/androidMain/kotlin/at/torch/compose/PlatformContext.android.kt rename to composeApp/src/androidMain/kotlin/press/mantra/compose/PlatformContext.android.kt index 9147bf90..efc238a6 100644 --- a/composeApp/src/androidMain/kotlin/at/torch/compose/PlatformContext.android.kt +++ b/composeApp/src/androidMain/kotlin/press/mantra/compose/PlatformContext.android.kt @@ -1,4 +1,4 @@ -package at.torch.compose +package press.mantra.compose import android.content.Context diff --git a/composeApp/src/androidMain/kotlin/at/torch/compose/database/builder/PlatformDatabaseBuilder.android.kt b/composeApp/src/androidMain/kotlin/press/mantra/compose/database/builder/PlatformDatabaseBuilder.android.kt similarity index 82% rename from composeApp/src/androidMain/kotlin/at/torch/compose/database/builder/PlatformDatabaseBuilder.android.kt rename to composeApp/src/androidMain/kotlin/press/mantra/compose/database/builder/PlatformDatabaseBuilder.android.kt index 3ae9a6d3..8839e8ff 100644 --- a/composeApp/src/androidMain/kotlin/at/torch/compose/database/builder/PlatformDatabaseBuilder.android.kt +++ b/composeApp/src/androidMain/kotlin/press/mantra/compose/database/builder/PlatformDatabaseBuilder.android.kt @@ -1,9 +1,9 @@ -package at.torch.compose.database.builder +package press.mantra.compose.database.builder import androidx.room3.Room import androidx.room3.RoomDatabase -import at.torch.compose.PlatformContext -import at.torch.compose.database.TorchDatabase +import press.mantra.compose.PlatformContext +import press.mantra.compose.database.TorchDatabase actual object PlatformDatabaseBuilder { actual fun getDatabaseBuilder(platformContext: PlatformContext): RoomDatabase.Builder { diff --git a/composeApp/src/androidMain/kotlin/at/torch/compose/extensions/Phoenix.android.kt b/composeApp/src/androidMain/kotlin/press/mantra/compose/extensions/Phoenix.android.kt similarity index 89% rename from composeApp/src/androidMain/kotlin/at/torch/compose/extensions/Phoenix.android.kt rename to composeApp/src/androidMain/kotlin/press/mantra/compose/extensions/Phoenix.android.kt index fdb48c25..06c074e2 100644 --- a/composeApp/src/androidMain/kotlin/at/torch/compose/extensions/Phoenix.android.kt +++ b/composeApp/src/androidMain/kotlin/press/mantra/compose/extensions/Phoenix.android.kt @@ -1,6 +1,6 @@ -package at.torch.compose.extensions +package press.mantra.compose.extensions -import at.torch.android.TorchApplication +import press.mantra.android.MantraApplication import fr.acinq.phoenix.PhoenixGlobal import fr.acinq.phoenix.android.BusinessManager import fr.acinq.phoenix.android.services.ChannelsWatcher @@ -23,11 +23,11 @@ actual fun schedulePlatformLogic(phoenixGlobal: PhoenixGlobal) { ContactsPhotoCleaner.schedule(phoenixGlobal.ctx.applicationContext) } actual fun getShowIntroFlow(phoenixGlobal: PhoenixGlobal): Flow { - val machankuraApplication = phoenixGlobal.ctx.applicationContext as TorchApplication + val machankuraApplication = phoenixGlobal.ctx.applicationContext as MantraApplication return machankuraApplication.globalPrefs.getShowIntro } actual fun getGlobalPrefs(phoenixGlobal: PhoenixGlobal): GlobalPrefs { - val machankuraApplication = phoenixGlobal.ctx.applicationContext as TorchApplication + val machankuraApplication = phoenixGlobal.ctx.applicationContext as MantraApplication return machankuraApplication.globalPrefs } \ No newline at end of file diff --git a/composeApp/src/androidMain/kotlin/at/torch/compose/ui/composable/widgets/nfc/HceMonitor.kt b/composeApp/src/androidMain/kotlin/press/mantra/compose/ui/composable/widgets/nfc/HceMonitor.kt similarity index 97% rename from composeApp/src/androidMain/kotlin/at/torch/compose/ui/composable/widgets/nfc/HceMonitor.kt rename to composeApp/src/androidMain/kotlin/press/mantra/compose/ui/composable/widgets/nfc/HceMonitor.kt index 2ae94d32..e177e366 100644 --- a/composeApp/src/androidMain/kotlin/at/torch/compose/ui/composable/widgets/nfc/HceMonitor.kt +++ b/composeApp/src/androidMain/kotlin/press/mantra/compose/ui/composable/widgets/nfc/HceMonitor.kt @@ -30,7 +30,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp -import at.torch.compose.ui.composable.widgets.dialogs.ModalBottomSheet +import press.mantra.compose.ui.composable.widgets.dialogs.ModalBottomSheet import fr.acinq.phoenix.utils.extensions.findActivitySafe diff --git a/composeApp/src/androidMain/kotlin/at/torch/compose/ui/composable/widgets/nfc/NfcReaderMonitor.kt b/composeApp/src/androidMain/kotlin/press/mantra/compose/ui/composable/widgets/nfc/NfcReaderMonitor.kt similarity index 97% rename from composeApp/src/androidMain/kotlin/at/torch/compose/ui/composable/widgets/nfc/NfcReaderMonitor.kt rename to composeApp/src/androidMain/kotlin/press/mantra/compose/ui/composable/widgets/nfc/NfcReaderMonitor.kt index 56bcf70c..39b8779c 100644 --- a/composeApp/src/androidMain/kotlin/at/torch/compose/ui/composable/widgets/nfc/NfcReaderMonitor.kt +++ b/composeApp/src/androidMain/kotlin/press/mantra/compose/ui/composable/widgets/nfc/NfcReaderMonitor.kt @@ -30,7 +30,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp -import at.torch.compose.ui.composable.widgets.dialogs.ModalBottomSheet +import press.mantra.compose.ui.composable.widgets.dialogs.ModalBottomSheet import fr.acinq.phoenix.utils.extensions.findActivitySafe @Composable diff --git a/composeApp/src/androidMain/kotlin/at/torch/compose/ui/composable/widgets/nfc/NfcState.kt b/composeApp/src/androidMain/kotlin/press/mantra/compose/ui/composable/widgets/nfc/NfcState.kt similarity index 100% rename from composeApp/src/androidMain/kotlin/at/torch/compose/ui/composable/widgets/nfc/NfcState.kt rename to composeApp/src/androidMain/kotlin/press/mantra/compose/ui/composable/widgets/nfc/NfcState.kt diff --git a/composeApp/src/androidMain/kotlin/at/torch/compose/ui/theme/Theme.android.kt b/composeApp/src/androidMain/kotlin/press/mantra/compose/ui/theme/Theme.android.kt similarity index 95% rename from composeApp/src/androidMain/kotlin/at/torch/compose/ui/theme/Theme.android.kt rename to composeApp/src/androidMain/kotlin/press/mantra/compose/ui/theme/Theme.android.kt index c6e5c5f9..0d8559cc 100644 --- a/composeApp/src/androidMain/kotlin/at/torch/compose/ui/theme/Theme.android.kt +++ b/composeApp/src/androidMain/kotlin/press/mantra/compose/ui/theme/Theme.android.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.theme +package press.mantra.compose.ui.theme import android.os.Build import androidx.compose.material3.ColorScheme diff --git a/composeApp/src/androidMain/kotlin/at/torch/compose/ui/view/model/NavigationViewModel.android.kt b/composeApp/src/androidMain/kotlin/press/mantra/compose/ui/view/model/NavigationViewModel.android.kt similarity index 96% rename from composeApp/src/androidMain/kotlin/at/torch/compose/ui/view/model/NavigationViewModel.android.kt rename to composeApp/src/androidMain/kotlin/press/mantra/compose/ui/view/model/NavigationViewModel.android.kt index 211b7396..13c67861 100644 --- a/composeApp/src/androidMain/kotlin/at/torch/compose/ui/view/model/NavigationViewModel.android.kt +++ b/composeApp/src/androidMain/kotlin/press/mantra/compose/ui/view/model/NavigationViewModel.android.kt @@ -1,7 +1,7 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model -import at.torch.android.TorchApplication -import at.torch.compose.AppVersion +import press.mantra.android.MantraApplication +import press.mantra.compose.AppVersion import co.touchlab.kermit.Logger import fr.acinq.bitcoin.MnemonicCode import fr.acinq.lightning.crypto.LocalKeyManager @@ -35,12 +35,12 @@ actual fun loadAndDecryptSeed(phoenixGlobal: PhoenixGlobal): DecryptSeedResult { } actual fun getAvailableWalletsMeta(phoenixGlobal: PhoenixGlobal): Flow> { - val machankuraApplication = phoenixGlobal.ctx.applicationContext as TorchApplication + val machankuraApplication = phoenixGlobal.ctx.applicationContext as MantraApplication return machankuraApplication.globalPrefs.getAvailableWalletsMeta } actual suspend fun saveAvailableWalletMeta(phoenixGlobal: PhoenixGlobal, metadata: UserWalletMetadata) { - val machankuraApplication = phoenixGlobal.ctx.applicationContext as TorchApplication + val machankuraApplication = phoenixGlobal.ctx.applicationContext as MantraApplication machankuraApplication.globalPrefs.saveAvailableWalletMeta(metadata) } @@ -51,7 +51,7 @@ actual suspend fun saveAvailableWalletMeta( avatar: String, isHidden: Boolean ) { - val machankuraApplication = phoenixGlobal.ctx.applicationContext as TorchApplication + val machankuraApplication = phoenixGlobal.ctx.applicationContext as MantraApplication machankuraApplication.globalPrefs.saveAvailableWalletMeta( walletId = walletId, name = name, diff --git a/composeApp/src/androidMain/res/drawable/ic_launcher_foreground.xml b/composeApp/src/androidMain/res/drawable/ic_launcher_foreground.xml index 9de5e78b..d6382cd9 100644 --- a/composeApp/src/androidMain/res/drawable/ic_launcher_foreground.xml +++ b/composeApp/src/androidMain/res/drawable/ic_launcher_foreground.xml @@ -1,20 +1,20 @@ - + android:viewportWidth="294" + android:viewportHeight="296"> + + android:pathData="m78,61.6c-3.6,0.7 -9.7,2.3 -13.5,3.5 -3.8,1.1 -11,4.1 -16,6.5 -5,2.4 -11.7,6.4 -15,8.9 -3.3,2.5 -6.3,5.1 -6.7,5.8 -0.3,0.7 4,8.6 9.7,17.7 8.8,14.1 10.6,16.5 12.6,16.4 1.3,-0.1 8.7,-3.1 16.4,-6.6 7.7,-3.6 17.2,-7.6 21,-8.9 5.2,-1.8 9.2,-2.4 15.5,-2.4 7.4,0 9.1,0.4 13,2.6 2.6,1.5 5.9,4.7 7.8,7.5 1.8,2.7 3.5,6.2 3.8,7.9 0.4,1.8 0,4.2 -0.9,6 -0.8,1.7 -3.6,4.6 -6.3,6.7 -2.7,2 -8.5,4.9 -12.9,6.4 -7.4,2.6 -9.2,2.8 -24.4,2.8 -12.3,0.1 -16.5,0.4 -16.8,1.3 -0.2,0.7 2.5,8.8 6,17.9 5.3,14.2 6.8,17.2 10,20 2,1.9 5.2,3.6 7,3.9 1.7,0.3 8.1,0.9 14.2,1.4 7.8,0.6 12.2,1.4 15,2.9 2.2,1.1 5.9,4 8.3,6.4 2.4,2.3 5.2,6.1 6.2,8.3 1.2,2.4 2,6.2 2,9.5 0,3 -0.8,8.4 -1.9,12 -1.3,4.3 -3.3,8.1 -5.9,11 -2.1,2.5 -6.5,5.9 -9.8,7.7 -3.2,1.8 -9.2,3.9 -13.1,4.7 -4,0.9 -12.1,1.6 -18,1.6 -7,0 -14.3,-0.7 -20.8,-2 -7,-1.5 -12,-3.2 -16.5,-5.8 -3.6,-2 -9,-6.1 -12,-9.2 -3,-3 -8.1,-9.3 -11.2,-14 -3,-4.7 -7.2,-11.8 -9.2,-15.8 -2,-3.9 -4.9,-10.5 -6.4,-14.5 -1.6,-3.9 -3.6,-9.3 -4.5,-12 -1.2,-3.2 -2.3,-4.7 -3.4,-4.7 -1.7,0 -1.7,1 -1.1,13.7 0.4,7.6 1.4,17.9 2.3,22.8 0.9,4.9 2.7,12.8 4.1,17.5 1.4,4.7 4,11.6 5.8,15.5 1.8,3.9 5.2,9.9 7.6,13.5 2.4,3.6 7.3,9.4 10.9,13 3.6,3.6 10,8.6 14.1,11.2 4.1,2.6 11.1,6.1 15.5,7.8 4.4,1.7 11.6,4 16,5.1 4.4,1.1 12.7,2.2 18.5,2.5 7.6,0.4 12.5,0.2 18,-1 4.1,-0.9 10.9,-3.2 15,-5.3 5.3,-2.6 9.5,-5.7 14.5,-10.7 4.4,-4.5 8.4,-9.7 10.7,-14.1 2,-3.9 4.6,-10.1 5.7,-14 1.1,-3.9 2.5,-10.8 3,-15.5 0.6,-5.3 0.6,-11.7 0.1,-17 -0.5,-4.7 -1.4,-10.4 -2,-12.8 -0.5,-2.3 -2,-6.8 -3.1,-9.9 -1.2,-3.2 -2.5,-6.2 -3,-6.8 -0.5,-0.6 -0.9,-1.3 -0.9,-1.7 0,-0.5 5.5,-0.8 12.3,-0.8 9.4,0 13.7,-0.4 19,-2 5.2,-1.6 7.8,-3 11.6,-6.7 2.6,-2.7 6.4,-7.5 8.3,-10.8 1.9,-3.3 7.3,-11.2 12,-17.5 4.7,-6.3 10.5,-13.3 12.9,-15.4 2.4,-2.2 6.2,-4.8 8.4,-5.8 2.4,-1 6.4,-1.8 10,-1.8 3.7,0 7.5,0.7 10,1.9 2.2,1 5.1,2.9 6.4,4.2 1.4,1.3 3.6,4.9 5,7.9 1.3,3 3,8.2 3.7,11.5 0.8,3.3 1.3,9.6 1.3,14 0.1,4.4 -0.6,11.2 -1.4,15 -0.9,3.8 -3,9.9 -4.8,13.5q-3.2,6.5 -10.7,14c-4.8,4.9 -10,8.9 -14.5,11.2 -3.9,2.1 -10.4,4.5 -14.5,5.3 -4.9,1.1 -9.3,1.4 -12.5,1 -2.7,-0.4 -7.5,-1.6 -10.5,-2.8 -3.5,-1.3 -7.2,-3.8 -10.2,-6.9 -2.7,-2.6 -5.9,-7.2 -7.3,-10 -1.4,-2.9 -2.5,-6.1 -2.5,-7 0,-1 -0.8,-1.8 -1.8,-1.8 -1.3,0 -2,1.4 -3,5.7 -0.7,3.2 -1.2,9.5 -1.2,14.1 0,4.5 0.7,11.5 1.6,15.5 0.9,3.9 2.9,9.7 4.4,12.7 1.6,3 4.3,7.4 6.1,9.7 1.9,2.3 5.7,6 8.4,8.1 2.7,2.1 8.1,4.9 12,6.2 5.9,2.1 8.7,2.5 18.5,2.4 9.2,0 12.8,-0.5 18,-2.3 3.6,-1.2 9.6,-4.3 13.4,-6.9 3.8,-2.6 9.1,-7.4 11.9,-10.7 2.7,-3.3 6.4,-8.7 8.3,-12 1.8,-3.3 4.6,-10.1 6.3,-15 1.7,-4.9 3.8,-13.3 4.7,-18.5 1.3,-7.4 1.5,-13.2 1.1,-26 -0.4,-12.9 -1.1,-18.6 -3,-26 -1.3,-5.2 -3.7,-12.7 -5.2,-16.5 -1.6,-3.8 -4.4,-9.7 -6.4,-13 -1.9,-3.3 -6,-8.6 -9,-11.9 -3.1,-3.2 -8.2,-7.3 -11.4,-9.2 -3.1,-1.9 -8.7,-4.4 -12.5,-5.6 -5.2,-1.8 -9,-2.3 -16.7,-2.2 -7.5,0 -11.6,0.5 -16.5,2.2 -3.6,1.2 -9.2,3.9 -12.5,6 -3.3,2.1 -8.5,6.5 -11.5,9.8 -3.7,4.1 -7.9,10.5 -13,20.3 -4.1,7.8 -9.5,16.9 -12,20.2 -2.5,3.4 -7.1,7.8 -10.5,10.1l-6,4c-13.3,-0.8 -17.7,-1.7 -21,-3.2 -2.8,-1.2 -5.6,-2.6 -6.3,-3.1 -0.8,-0.7 0.7,-2.6 5.5,-6.7 3.8,-3.2 9,-8.7 11.7,-12.3 2.7,-3.5 6.2,-9.1 7.7,-12.4 1.6,-3.3 3.4,-8.9 4,-12.5 0.5,-3.6 0.7,-8.7 0.4,-11.5 -0.4,-2.7 -1.3,-7.5 -2.2,-10.5 -0.8,-3 -3,-8.5 -4.9,-12.2 -1.9,-3.8 -5.3,-8.9 -7.7,-11.4 -2.3,-2.6 -6.3,-5.7 -9,-7 -2.6,-1.3 -7.5,-3.1 -11,-3.9 -3.8,-0.9 -10.8,-1.4 -18.2,-1.4 -6.6,0 -14.9,0.7 -18.5,1.5z" + android:fillColor="#010101"/> + android:pathData="m127.2,34.3c0.3,4.5 1.6,11.1 2.8,14.7 1.2,3.6 3.7,9 5.5,12 1.8,3 5.5,7.8 8.2,10.5 2.7,2.8 7.6,6.8 10.8,8.9 3.3,2.2 8.5,5 11.5,6.2 3,1.2 9.3,3 14,3.9 6.5,1.4 11.4,1.6 20.5,1.2q12,-0.5 21.5,-3c5.2,-1.3 12.9,-4 17,-5.9 4.1,-1.9 10,-5 13,-7 3,-2 7.9,-5.9 10.7,-8.7 4.2,-4 5.1,-5.5 4.4,-6.8 -0.5,-1 -3.5,-5.2 -6.8,-9.4 -3.2,-4.2 -7.7,-9.7 -10.1,-12.3 -2.3,-2.5 -4.9,-4.6 -5.7,-4.6 -0.8,0 -1.7,0.3 -1.9,0.8 -0.2,0.4 -4.1,3.2 -8.7,6.4 -4.6,3.1 -12,7.4 -16.4,9.6 -4.4,2.2 -10.9,5 -14.5,6.2 -3.6,1.2 -10.5,2.4 -15.5,2.7 -6.7,0.4 -10.7,0.1 -15.5,-1.1 -3.6,-1 -9.4,-3.2 -12.8,-4.9 -3.5,-1.8 -9.6,-6.2 -13.5,-9.8 -4,-3.7 -9,-9.2 -11.2,-12.2 -2.4,-3.4 -4.7,-5.7 -5.9,-5.7 -1.8,0 -1.9,0.6 -1.4,8.3z" + android:fillColor="#010101"/> + android:pathData="m169.4,14.5c-7.1,7.5 -13,14.5 -13.2,15.6 -0.1,1.2 2.5,4.7 7.5,9.7 4.3,4.4 10.3,9.5 13.3,11.5 3,2.1 6.1,3.7 6.7,3.7 0.7,0 6.8,-5.3 13.4,-11.8 6.7,-6.4 12.8,-12.9 13.5,-14.4 1.4,-2.8 1.4,-2.8 -12.2,-15 -7.5,-6.8 -14.1,-12.4 -14.8,-12.6 -0.7,-0.2 -7.1,5.8 -14.2,13.3z" + android:fillColor="#010101"/> diff --git a/composeApp/src/androidMain/res/drawable/ic_launcher_monochrome.xml b/composeApp/src/androidMain/res/drawable/ic_launcher_monochrome.xml index 9de5e78b..d6382cd9 100644 --- a/composeApp/src/androidMain/res/drawable/ic_launcher_monochrome.xml +++ b/composeApp/src/androidMain/res/drawable/ic_launcher_monochrome.xml @@ -1,20 +1,20 @@ - + android:viewportWidth="294" + android:viewportHeight="296"> + + android:pathData="m78,61.6c-3.6,0.7 -9.7,2.3 -13.5,3.5 -3.8,1.1 -11,4.1 -16,6.5 -5,2.4 -11.7,6.4 -15,8.9 -3.3,2.5 -6.3,5.1 -6.7,5.8 -0.3,0.7 4,8.6 9.7,17.7 8.8,14.1 10.6,16.5 12.6,16.4 1.3,-0.1 8.7,-3.1 16.4,-6.6 7.7,-3.6 17.2,-7.6 21,-8.9 5.2,-1.8 9.2,-2.4 15.5,-2.4 7.4,0 9.1,0.4 13,2.6 2.6,1.5 5.9,4.7 7.8,7.5 1.8,2.7 3.5,6.2 3.8,7.9 0.4,1.8 0,4.2 -0.9,6 -0.8,1.7 -3.6,4.6 -6.3,6.7 -2.7,2 -8.5,4.9 -12.9,6.4 -7.4,2.6 -9.2,2.8 -24.4,2.8 -12.3,0.1 -16.5,0.4 -16.8,1.3 -0.2,0.7 2.5,8.8 6,17.9 5.3,14.2 6.8,17.2 10,20 2,1.9 5.2,3.6 7,3.9 1.7,0.3 8.1,0.9 14.2,1.4 7.8,0.6 12.2,1.4 15,2.9 2.2,1.1 5.9,4 8.3,6.4 2.4,2.3 5.2,6.1 6.2,8.3 1.2,2.4 2,6.2 2,9.5 0,3 -0.8,8.4 -1.9,12 -1.3,4.3 -3.3,8.1 -5.9,11 -2.1,2.5 -6.5,5.9 -9.8,7.7 -3.2,1.8 -9.2,3.9 -13.1,4.7 -4,0.9 -12.1,1.6 -18,1.6 -7,0 -14.3,-0.7 -20.8,-2 -7,-1.5 -12,-3.2 -16.5,-5.8 -3.6,-2 -9,-6.1 -12,-9.2 -3,-3 -8.1,-9.3 -11.2,-14 -3,-4.7 -7.2,-11.8 -9.2,-15.8 -2,-3.9 -4.9,-10.5 -6.4,-14.5 -1.6,-3.9 -3.6,-9.3 -4.5,-12 -1.2,-3.2 -2.3,-4.7 -3.4,-4.7 -1.7,0 -1.7,1 -1.1,13.7 0.4,7.6 1.4,17.9 2.3,22.8 0.9,4.9 2.7,12.8 4.1,17.5 1.4,4.7 4,11.6 5.8,15.5 1.8,3.9 5.2,9.9 7.6,13.5 2.4,3.6 7.3,9.4 10.9,13 3.6,3.6 10,8.6 14.1,11.2 4.1,2.6 11.1,6.1 15.5,7.8 4.4,1.7 11.6,4 16,5.1 4.4,1.1 12.7,2.2 18.5,2.5 7.6,0.4 12.5,0.2 18,-1 4.1,-0.9 10.9,-3.2 15,-5.3 5.3,-2.6 9.5,-5.7 14.5,-10.7 4.4,-4.5 8.4,-9.7 10.7,-14.1 2,-3.9 4.6,-10.1 5.7,-14 1.1,-3.9 2.5,-10.8 3,-15.5 0.6,-5.3 0.6,-11.7 0.1,-17 -0.5,-4.7 -1.4,-10.4 -2,-12.8 -0.5,-2.3 -2,-6.8 -3.1,-9.9 -1.2,-3.2 -2.5,-6.2 -3,-6.8 -0.5,-0.6 -0.9,-1.3 -0.9,-1.7 0,-0.5 5.5,-0.8 12.3,-0.8 9.4,0 13.7,-0.4 19,-2 5.2,-1.6 7.8,-3 11.6,-6.7 2.6,-2.7 6.4,-7.5 8.3,-10.8 1.9,-3.3 7.3,-11.2 12,-17.5 4.7,-6.3 10.5,-13.3 12.9,-15.4 2.4,-2.2 6.2,-4.8 8.4,-5.8 2.4,-1 6.4,-1.8 10,-1.8 3.7,0 7.5,0.7 10,1.9 2.2,1 5.1,2.9 6.4,4.2 1.4,1.3 3.6,4.9 5,7.9 1.3,3 3,8.2 3.7,11.5 0.8,3.3 1.3,9.6 1.3,14 0.1,4.4 -0.6,11.2 -1.4,15 -0.9,3.8 -3,9.9 -4.8,13.5q-3.2,6.5 -10.7,14c-4.8,4.9 -10,8.9 -14.5,11.2 -3.9,2.1 -10.4,4.5 -14.5,5.3 -4.9,1.1 -9.3,1.4 -12.5,1 -2.7,-0.4 -7.5,-1.6 -10.5,-2.8 -3.5,-1.3 -7.2,-3.8 -10.2,-6.9 -2.7,-2.6 -5.9,-7.2 -7.3,-10 -1.4,-2.9 -2.5,-6.1 -2.5,-7 0,-1 -0.8,-1.8 -1.8,-1.8 -1.3,0 -2,1.4 -3,5.7 -0.7,3.2 -1.2,9.5 -1.2,14.1 0,4.5 0.7,11.5 1.6,15.5 0.9,3.9 2.9,9.7 4.4,12.7 1.6,3 4.3,7.4 6.1,9.7 1.9,2.3 5.7,6 8.4,8.1 2.7,2.1 8.1,4.9 12,6.2 5.9,2.1 8.7,2.5 18.5,2.4 9.2,0 12.8,-0.5 18,-2.3 3.6,-1.2 9.6,-4.3 13.4,-6.9 3.8,-2.6 9.1,-7.4 11.9,-10.7 2.7,-3.3 6.4,-8.7 8.3,-12 1.8,-3.3 4.6,-10.1 6.3,-15 1.7,-4.9 3.8,-13.3 4.7,-18.5 1.3,-7.4 1.5,-13.2 1.1,-26 -0.4,-12.9 -1.1,-18.6 -3,-26 -1.3,-5.2 -3.7,-12.7 -5.2,-16.5 -1.6,-3.8 -4.4,-9.7 -6.4,-13 -1.9,-3.3 -6,-8.6 -9,-11.9 -3.1,-3.2 -8.2,-7.3 -11.4,-9.2 -3.1,-1.9 -8.7,-4.4 -12.5,-5.6 -5.2,-1.8 -9,-2.3 -16.7,-2.2 -7.5,0 -11.6,0.5 -16.5,2.2 -3.6,1.2 -9.2,3.9 -12.5,6 -3.3,2.1 -8.5,6.5 -11.5,9.8 -3.7,4.1 -7.9,10.5 -13,20.3 -4.1,7.8 -9.5,16.9 -12,20.2 -2.5,3.4 -7.1,7.8 -10.5,10.1l-6,4c-13.3,-0.8 -17.7,-1.7 -21,-3.2 -2.8,-1.2 -5.6,-2.6 -6.3,-3.1 -0.8,-0.7 0.7,-2.6 5.5,-6.7 3.8,-3.2 9,-8.7 11.7,-12.3 2.7,-3.5 6.2,-9.1 7.7,-12.4 1.6,-3.3 3.4,-8.9 4,-12.5 0.5,-3.6 0.7,-8.7 0.4,-11.5 -0.4,-2.7 -1.3,-7.5 -2.2,-10.5 -0.8,-3 -3,-8.5 -4.9,-12.2 -1.9,-3.8 -5.3,-8.9 -7.7,-11.4 -2.3,-2.6 -6.3,-5.7 -9,-7 -2.6,-1.3 -7.5,-3.1 -11,-3.9 -3.8,-0.9 -10.8,-1.4 -18.2,-1.4 -6.6,0 -14.9,0.7 -18.5,1.5z" + android:fillColor="#010101"/> + android:pathData="m127.2,34.3c0.3,4.5 1.6,11.1 2.8,14.7 1.2,3.6 3.7,9 5.5,12 1.8,3 5.5,7.8 8.2,10.5 2.7,2.8 7.6,6.8 10.8,8.9 3.3,2.2 8.5,5 11.5,6.2 3,1.2 9.3,3 14,3.9 6.5,1.4 11.4,1.6 20.5,1.2q12,-0.5 21.5,-3c5.2,-1.3 12.9,-4 17,-5.9 4.1,-1.9 10,-5 13,-7 3,-2 7.9,-5.9 10.7,-8.7 4.2,-4 5.1,-5.5 4.4,-6.8 -0.5,-1 -3.5,-5.2 -6.8,-9.4 -3.2,-4.2 -7.7,-9.7 -10.1,-12.3 -2.3,-2.5 -4.9,-4.6 -5.7,-4.6 -0.8,0 -1.7,0.3 -1.9,0.8 -0.2,0.4 -4.1,3.2 -8.7,6.4 -4.6,3.1 -12,7.4 -16.4,9.6 -4.4,2.2 -10.9,5 -14.5,6.2 -3.6,1.2 -10.5,2.4 -15.5,2.7 -6.7,0.4 -10.7,0.1 -15.5,-1.1 -3.6,-1 -9.4,-3.2 -12.8,-4.9 -3.5,-1.8 -9.6,-6.2 -13.5,-9.8 -4,-3.7 -9,-9.2 -11.2,-12.2 -2.4,-3.4 -4.7,-5.7 -5.9,-5.7 -1.8,0 -1.9,0.6 -1.4,8.3z" + android:fillColor="#010101"/> + android:pathData="m169.4,14.5c-7.1,7.5 -13,14.5 -13.2,15.6 -0.1,1.2 2.5,4.7 7.5,9.7 4.3,4.4 10.3,9.5 13.3,11.5 3,2.1 6.1,3.7 6.7,3.7 0.7,0 6.8,-5.3 13.4,-11.8 6.7,-6.4 12.8,-12.9 13.5,-14.4 1.4,-2.8 1.4,-2.8 -12.2,-15 -7.5,-6.8 -14.1,-12.4 -14.8,-12.6 -0.7,-0.2 -7.1,5.8 -14.2,13.3z" + android:fillColor="#010101"/> diff --git a/composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher.webp b/composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher.webp index ae650353beaa7b11895586819eb56cf097890832..2d1453e14d14bd4abd7a4bd324057428efc4ee72 100644 GIT binary patch literal 982 zcmV;{11bDcNk&G_0{{S5MM6+kP&iD&0{{RoN5ByfHBh3p?T{pWU$Sl6wvDlE+qP}n zvufM6ZQCxpD&mWO5s{hQ|3BQle+1lW+mPQ`Ht&X7Ts!9PWNx?!*sCN&9{vPi= zXM%!FN<|9rK0Iz=q$lT#5(+9NqcRFb+a9+NMtVhotveJ{mK4RjeN&_;vE!U#a+G9U z2t(Y$vE!bS-2{G_HAWH8Q=5BO7g zEb0zvOgrg$`9w1eXlw)FI>=#Cnl4^fV7O{n12c&nKdWU1mqB;NN*P4}L60rPDa$Ls}ObB!99|853k_(BCy3_#31#;`2$AV=soRSO|3IP42k^bzK> zgZwU=(C;HG$$CVZb-wYOw|wglGo%p)9Mc{H8oI=zE>jW1J_5+}uCA)7q=V-jq#tG} zua!^i;1WfC6vE~Z$acFB=I>@R{ff+$LHPG6Ei9dIy()|W2YyWnDB-d*@slYs@Ou{J`5;lJ^}34#Q99P3TV6px6n&tAaIdooD^_K zPb_9KoepZ^Quz{LCWg0kItdx*DY!`l1A1`j zgg>xKCP|Q{JBD|NE3kwiBMGhcX^zF+W12GrjvJy22FxVpD$vgm~$g)o#>RZXZO zh5;3%5yhSq641#uLbH6&V#&VBA&~0}Ju$TLx+8>c$o7KD5`>&Djqsnb5{?il>wpr= z-Kv=whLGAGbCfuTS^zj|l2Pnfn}~C&i;n*Tow_n-(_<=Uu1#?Z$Cjs5PM&!Tk)p)P z>r|HS3MpJBxV$3AuszDw=Ek9)m`@<`m8P_u1YwtTOAxVu%7Z(xywNT##GUr8>>UDE$EgAJhT z{BlkJ{(Yx`W{`S4(1<`yO(r7Upu6;#9?~O=7F(5A`xj&Lo?QFDx^9Gsnn}PY>|RyRU}mGL6PfqqR&WBM`Fpj42b?i^qrxO z0A2uX-qp5ChhjC%-{#+Dr` zeu7wW2Cast7^RMTBZ<8qZiym+#VdJ~2c>B9{()*StH(#~C=uIOu|;Rcw*=x-TgiQbl~1nH

{NyYWrmopEjOG6;(*TDNWuheue(`Fuz^Ra!5Q&0|DbX&;etx_iCWZPD9b}3uU#eKWy1Y47ook5bR6`U3QJ_E+0#P6$3Pd3g z1qwtV5Csb7s%iClsbc5@J4vCDgx+0bg3OXRGH>z!IT`QPO@bE0-sOma-Xq<{EZ)$2 Mmsqd=0pj0O0Ko5WWB>pF diff --git a/composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher_round.webp b/composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher_round.webp index a36df6d8d0eab9f48de0007385b76d5b418cbfb5..e4c7550ef9440cb53b5f7df975d130295fdd7372 100644 GIT binary patch literal 2176 zcmV-`2!HodNk&F^2mkpe++J$ksM(C| z$vRFWBubKO+SXY*jO~kO+qP}nwr%_Uf^FN@FI?O9y?d?Q4BWPDBqtr|b=-RZ2F$uV9fV!2> zH`hWnmECkSA|=!dD&l5af9j7G1!CB%#G{!vSo>QbB5WGok_?wpb3>@vB?uv-!DhTl zYAP8N5xrI4wI(Mq?0#&XgiyNaiRUDY4GuwQo;1k28iz=l=ndfKv57(fg+CY`QN1Xa zVbd>()1dK7f-VjX^g+nH0d$D8D*;F~Us}|0`|#}$a^mYlmyG2NFDM>)e<$NXB8S_q z>>We(&A4hnjnP_xu~B-IeD!~A3NB>dFCVRe>G#UniF6b`+$i=Yu&HMS2UF4rN4Z?v z+=5E`lF7WBz~3jtTn6#o#@Nj9hMwuHdz#(48XbM@gI;AWS;^^pRy6jL0YF&^4_Cec z8f`#ApV};2S6%*RSnZ@7fC9_TCWn}QbBTT0l6zf!vWOgN9L|x~;RbV32um!Rax<3@ zrRtZY4BbAwJCWYw(Uy+gy6UwOb0TI@{xhX=?zEY*mu`E>%u@oI4B`7DK#)fgpglLG z9>#EDC@mp!e)<3Q{qqT%^u8k@(ckY!8Y~Og;7?s>mGv6&9cFADl^f{dq#%;dN(TVd zuSp4iRe!;6Sr%;;48==bWBpH=xAzN2B9F@{xVpAPp;MK>GwaS+7EB=;5|`D;LP`(D zuv~ptzw>cT;_HWz?nLWEI?7Lt{bEbrIgKa?=(T37)Yx6*axz7fFOh!%0LblYsXGqs z8|{dc~M-SC?*~Ny7B|xzJHCFCvD}Ib)WzV zU0r`TSBwuI$Fg3OnEC!*{a65nRf)&RRO#7|9M>#z+0tCvV7z!B;hfu+1Y#yWtsub$ z%!F!_D(narM0$RSum4U?eC!5QuT;eAR+)f+R<{JLePs%|&wgi+06NYadLC7IO4*uT{aR|vWj6~fU!PT;*0d{;`R|4^@_&{%*nTS3g zfWJPGLyBmY^{FTy3v+p1Ql*Xj>9so@P?a$l5Z${Q(M0EDlfGz{S@=51C^)I`^bD125HUm$sVTXAQunYWQJMQTT)wz)hoE>J7K8@BJWq?i-+Z2~Dx(A>u6@e!hkhuX_uoJR0$&22 zWT5RosH2R-wC_n)D%EAX36kFY9y+n9%r*Oe#QnE?->Flx zNvs2PXms_8R^|HUdY!sxEi^t*_jKUxWsdxK*!UUfBd~!4Z%e< zGa&3fR$y|}%{8n4PG9L|$IBEWgTcjPp#^j~cG0U3{>kY^7_Q5uCYfX^tO^m?1wSoa zH;f+qlQZk+#pO&X5;aA@*3}oSpMj1m4!`N}`|tnCXh$E0p}~z4htrP^{GIW^y9{~I zqU?`=&oqr}sI3$WjiD`cUVQMGtM0$}=HqYv{uWo6RbSX#I(w=r>-V_QTaO>Oc;>1y zbSXlUm0~y4^p>O#y`=&hS&PR)BWMZjpwpb)=j^@s;0?xXG2Z*XJZG;_m4}v2DeD3y z^QBhwZ>X(ruM#tNJ*e+M6KGn>I=Rd$F{9-b{fd$%AZjzdrr18PS#T_8k1M06lmGxK CW;Wvh literal 2036 zcmVA1m2TU%ZF6kfw#`?t zZQFWCF=oq?4*XcM)#|UGSJje`~`f(uKeFuuen)jMOBc6JbZZ z62HKm3Pa{mhLMY(2Xlz@fND=9h;TB#g8K|Z$hnloo8Wsw&-6ADd1_2{Rh^JDSnk7f50@4`P5nk z@A^PC^ETM|i-#!~(Xk0gFrO@6`%S8ot2}GDe|+jEUtv9UESq0uxDR7YsV{LX*?sb# zGu;813+b=;#Ww_NrEPwb0&cOL?d3g!<8ayUGjH22jn8JAjZUy9Ik5MsZcxC`wLWr% zLdpe?a_k&h=@UXQTZ&(AbgeLgAoVlOo%oi{CRk{Z0oLO=a5jDep-Ds-&^I+{yWl%B zKlG5do%FwK3y#9tvvWmf(uqvkIa?7F%w)diO$7_hw%98&7P!ZI-tZRYrEBxaQu;J@ zjvTm~qrcN~eN8dlU8-0nuQ98flY@=NIzi6T{PqY00Y?Ghkv9d$$aKXGH&hK36jYVf zKy5Yk(Oe4Vq^sU{3}B!`l=3GJ16{3z@@`d7TnEu!N-N?@W!Nwuf1Cb=23^;wW>eZ~ z!Jcc6ZX(s>R@Owkj^uFBe!}_BkgyR#JJ#M*BppL~qJy-PW9CXZ6U<@dO*7d~!!XmVBUm|b=(d4Q-X0(w z6I|E7w$;UoxLSQRoP5Ax9Dfk31IKO~;pFv!oCuLT$1N^ZOJ-k!i)AC7Jl)5BNJRK( zF4S8`gEaCo!LyO}9iBOa5*X0D&gnaOdCi+%^r=Uzuo)M7b`9)Bx=!a8Q&tNp=i>vP z@ckoij%_#yp{?uAtU1u3^~hhm_xIoa^sH6xGtw?x*YKMEp``1C5j5|9o0qj#dfIAp z&2$70lAk|fcU+ohTvn3&pcqQA@0Vr zu+d@no&&Mtyutv&&OKAMaZcRiIS*QIn8moB+_Izb00=Q4qCzO|`jT^Cw`CraG1^pI zBR~BBl|mw-0JMC23umf>CVR?>=@#NZ$!(sy4_baoTwbRj=`i@%F21hK2(Q@ZQBj`$ zwmtPmLE`!X_Cf>H*1pNtP4}TyQmkT`^>sHbbmtb>e&Qc{{CE(QjSFZbWv72FJtY>J&p2*z4dvO^wyHax1CJOV+LBJ}y= zds9x?C$@K!@fcl6&Ch>^zR56oRsmEm8@X|<@Uz={QnBGT{#iNbZu&=rO~{Pd;+xsC>B zD|h38`<{d0(6w$kOvGblTCVC018Ob&@T)!SEIDIN6Vfcn9`Ao$a}f+kmT3tSrywq0 zhaNC=)a76OzB^B4Vg6sh>-4OUlx14EyYv4?T^aUgC&@*e!D~7~9~d#eK54h>^mR+?EAG__OnSR zv)rUG|8>B+EuVkqqcHSI#xkIwnlh>si*|(WFc5}cGkwfekG=T8$3OqOa@EFd+xPB1 zSWviW+p1OZ4?lkV#W7bUVMGLa6zy20$l79Gde=8rtzOd+xG+;2fh>dPq7P^DO@R=mRnouIP`J)mdYZ|3@ncgRc@X)x%x2?C>L STqbGMShFcBH;`@c{-gxT;sv|_ diff --git a/composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher.webp b/composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher.webp index 468691875ba1060eb9d91d74f8428a0110b97364..63527384f43bb2c5da5f918ad01988e3848e801a 100644 GIT binary patch delta 629 zcmV-*0*d{P1pEXFWwr$(ScqZMQMJ83>zq zLdeD_WV1;<1;&K3&=b1ARGBfG#44nOL(_xt6`W!`v@%W8httAf?^trsu-To z@MZin`~kCQCQ;AFnoM+ODeTsie@7L;sdCiEmK7IB5j#HP-zZtNmOyK>Z1a!9YhbEG z6eW3o3|n*HY&@EJxL`34S>19+Lz__X(II=BGgq*|dYNpXNJLssz+KcjbG4oKKWCuaU0)MYwDa8@-BdsGICfR3(SuUdRJ4!H3K28WfLm2#% z{>OgZ|NN;1t<8$9m=I+xFPDZF?pWgTje_y7!S05s(7`AlSsVZDWe`oAt^KjH#@rkAd4pirhJ7zBkZ= z5*)@6;xNr{h*N-Yu4xx2#bw;XUBWPhQuX2#r|_ZtAiWZYNryP4UYv@@G6_UJoS~p9 z9HyTt;*&)DlK#X$!f^3R_UZXh69rUOh9mUaRCt$&e+qG!?9<2W3I%XP)!~`&24r}x z0aUAhvu_AEv@c$gD8DES&~qEuZRaSHz5*P5)nzx;QQn&O1su^0M~vf#9r6|6Vxkl3 z{Pe(%4OTY@ShoHQ7)L{|QWJt7X#V2r!y`xW;jsUPL8ZoO^8xiPpG_FOPS`tvRD%4v9 zYecDbXTVxhXVw+4c6B@M9$2SbbjM4u77QD57_4cr{B48vl^zRk!4edx^%L-W^0OcI z!+Z7rz2}cDpjv}lRX9wiI=^0I5Z@{6-D~BD?nG3-gD7$9{1;5d2&1r{&RnCU`gaqB zUDl`XUcbHneE0GGlO%t4>do8nd#5c5YxpoTH1yb|?GyHdVeSWL_^+#85iyiTIpWZW Qn3jKuoyeIeaX397p>JLT2><{9 diff --git a/composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher_round.webp b/composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher_round.webp index 84ca4ef6ad97a9f5bee7ae9c2d54f272f2e4408a..ce6eb166d80d0979ec1f1410aecab0ce6ca461e9 100644 GIT binary patch literal 1386 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 diff --git a/composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher.webp b/composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher.webp index f080cea4b5a5500715f88966b31d0b1793ec9ec5..6fddd4f18682d613908acb31a9570bd80bb2317b 100644 GIT binary patch literal 1258 zcmV@C6jzzo5j6oT%>h(*O~VpXO{V=)&KExUX6ew z+qSBRXSln&yL(760hiHGgyh6TFdC=5J92l|I|0;gTRS94>y5I}wr$(CZQHhO+qN~f zZM$q&WJP>ZBjN{CuD-MGpb*jj36Ni`2@_#3{u#b6Ec(7Rq9Vk|Oipq*UQDG$@|Jud zIrV8q*Yre>Ij8+xCZv8=h*-%B1!<4K0}UJ&yuA-$A!@;wcS>*H1O26b^e=Nhuw3BjMM3>$nT)cJH&bGXO?)|a=vxiykBd_9>~1S4 zM2vuLhV=_4FJ3n@KxV*KBdk1sS<3>Oft-!8^89r%5As{zFD-W4TUG_hV}81g{n|uDZGGKj7Y%RU~27{btrQUjxtXuQ*g2xacO#w@@8nM@9|G89Day ze`$EqCoF-FA;keuWPY=+cG;{+FQ?l8UJ4Rq{yw)p%DkRM@~R3TX=hQP_3!?J4an16 z%gz2=0f09O2%Z9vw$Ouyb-%M7VsHNjeMdj?O8__ggs%T{i7gVXXZG8Qq5^=Z+SK|k zc*VKe$8EnoC{8&g;z(KHenABeyJ+0+C;-;6RE8a7&7Ru7fg8zzD)4&=l62YS1b`oc zJzuqhm#9Bj1~67=dq6j1AlKMIT5+A`Nh+}1LsKY355rm44wOYYzK!>u9_UVzUguQ9 zQ4Fw`4avg{EYVN3Od>tzWE_(2=b8nu*vhBuhnL3r$ahrS5u@`4_*Hq=~)LI)~&C8J`v~ zQ|ec1rMDx=psMv6=KfvTTWB`|%2LTF_>yWZd|6IBuJ4}!;wO0NRk{qT;bxJ?S?mCS z)LSj805zBVu38T-*LE=@bxy}Kc+wEF&fmqreLxg!2#7x1*GG_U9j-f7d(x)F#W?V+ zI`T~a4)*-T%K11e>E(ir?V!5j)jz&Mg z`&R!v{P+*w!-a8bgNYf$qv`v{-@*IVKkDztpYtX46Z(gz{dq{{xn@A)VwmPyN2hN= z0|A2`yn|b3v%Ppg0%Rtjt!lWtEBlkfqq~m}-yXjDPRIVer*LQ5S%te$d|W((j$&pG(8j5T2*77YJ~>#`MHR~u1gVq_*KISkLm6U-S+E|Z-4G^1;JqQ|t+ zZaV2xKgC3}WSD}qN8o@28)luoZ($~?!R0SXXWs$&C4S_u1rtH`+rhbpT^;`h1mau% zr>vNh-@oC0sDUsa^5h~bep8kVQZF|nVh&YYzH`W13F6NddGF2LN|1>t0bPaVi%s6W zE@yz$fX^aUdHb@E1y%#ui&^FE>vSF@)~2}#x`?3qpAc;@6?l5rjQ8SzBlg%d^+JS3 ziJ8Fxxo)0e{?6~KK*|n`u0YoT406YKp9YA!(^9BaRA!@M{myP1+iHLibCaUVKPE|N z+vNub#e#%M;rX8_Reph`_Ic(oHKkDLqAH0*l&gq?39)#fz6=L2x3?N949WgJJOaTQ z-*)KCh11td;VR{`kD_2<4O~MO7>-z23(|mqG9&L7(p;Kb)ar&#D1%fdG&yIlygBi5 z&voA6p7+E2PmcE!(BSTEr)kMIk4Y}!qc2ZgTC7firfJQzU8hcy2WU>bKDli}&oBo# z`aAcY9J{$?L>%9qJ-v1R!NY~n+`syqhF?;MSA?6Mj+v(C#w}fF${jxmGCq69#>s#$ zZahVPc>)?l?20_J``Y=(H6>UOPJydk zIom%@fdeqYt~@walnXGFEsl<4VTDXQFDZnB2Qtab^gwP|$i&j}1I0}t`w&|j?VJIb zK}1?YST10#JfzG3$qN{j%gWT+T%;bZiU$(h_bxe60-#zt3h#RlNa|>DK)~$Ce5!c2gI)} zg6!RXqba#cRCtL&c02k9&bRot!@qz3D;$pFON`YZ?oU5G{tM2x{1Jcu{*2FyAK$$> z?aV_m$yEay6vH&px;_025(q5lz!$ha8}Ef(5+F4Otyja{TG^c396dfhe|!Gw8XdY% zp8U0Ga~1AdO$3fcAn+QDc|?m#{k7rtP|NVRTU?Iv=>(7t1_r-MSKxpL0R)Xtr4u3e kS#b1vU=Wq4D)kkHGNa*9#*KSGtla|v1v5TM0ƆGF`;X#fBK diff --git a/composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.webp b/composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.webp index ec0449c2a1d54655f5e44cc3524b44466d544108..0690f466bdb342d947122ca5c5191f6499e4de77 100644 GIT binary patch literal 3166 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 E1A*E@`~Uy| literal 2980 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 literal 4932 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 CjIdJx diff --git a/composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.webp b/composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.webp index 14607058dcec45278ced2e2f213e57ef0f5c8f9f..659f78f25ad2e6be1e025165f2b300a8966e6693 100644 GIT binary patch literal 2750 zcmV;v3PJT!Nk&Gt3IG6CMM6+kP&iDg3IG5vzrZgL)rR7>Z5(C)v3t9FN5lm1<+2i8 z@@{km%cYj%DNoy{Hgdi&Gv9Ng6J0s^3vyykuFQO5W@ct)W@ct)=6KW{hMw)tE%S4g zwMtndJFCos?cJ6qhN^Mg=?r>fm1ZO4+_rV>RbDf;ZQHh0r!y5s~8N~_PcG9v} zW}tc8`gI!h?RCY1mP=ALdcH=zm~y6TIET_xzOGSkW=38xd@+Me`jrs7U*8nep6Z#{ z<2?X)V_LJs%VB!W)Kv#)Pw}#3kM{xK)#*iz*9S$pJI0eq7wZl-CYk+G2yj1|!|>P5 z0T>5g(L0tT(_Yt|hkTO#&l?Qjt2N2#9tZ$H>3s`UP(1aQnv**xNk&(DBp=ATutvYKNB#f9dMOR?Y0RHQ^orsCj1drc|@6rcIw}7QnAC zY~gZyxT*ngJH7wrEvKGx(XEkDAJ^em8os*xXHR^iK(_e9KaSdWkA04P_zO=L@OXt4 zKPe^IH{<;lI^DT;0>#;zJ({lxfvu!6=R0R~#ej!yoHyR&XsMrH8Axe=m3Kl~fZQyT z*vSw3%!M#;M51W#pv2h5bXrZF^sg4+`YOR(=LR5qkZ8AmCH9J=!rtXt5Zr+D*SxI~ z@_7pg4tLFtt)R;2#ae)GcRt{)5?JmlI1Z*0Qm8g(h!&vIg~F!=@0%3&qUuGOYk^X4 zoMDEbXzW>(PhIJ#mxdp`$_SFN{WZnAB8{YfI>bLrDcAdf!2nQp*UTgve$tZf_a8u# z4edqVI7-j?7EJH0C3&)Tgz~>RXet_$ZiD!vMybrVVeW29a;73pD1YSWLl3F1udm*7 zS&CzKg1GE=$|gJy+2_*8x_dRDWi2f)TVe8Sl}zjrkRH4c$wM^3+t$*exe&Krkh1H+ z;tnLUTs^?;R#yHN;$W>WGfOKgPm)Y|R}(sA%5BpVrspJ6GW|hV{fnf3fhGhGkct~I zR#bXwAIkPCxAbBn$zwDD6QnrR_@_SkBj5XW{SlO%`$t%wkVbNOUBEn2q(9XH%dR$a zjCAd7u>Nu%l2bcU;P#+`^P_SKqlZ;0c*ZB$-;wfaJ1FQf%AV+Ybx`;uNltX6LY|`l zFHLSkH087cs65ONb)@cGwNL@RIeyvNcnkiBiM5j!-QnaLi=ni9Q3FFxgbM#X6>z=M z$lw+)9yPDoiX9`7N-qf2FJ}tII#N3Kb5)pk**irP_bP1NFGlD(($t)0v>k|?(nrAE zLx$i>Athf;E2w}Y^&ro)1toimW^877Ij2-b(b^PdI@96goK3c%**^llXgHBCDF_^s zAX?a&&L(+M$QJA_Iv#*~AXh4~Q#IOFj50MuQzMNNiG2+!r0Ccp$zYLD`V6uVH z|Hml#X;qqT1OVRB>K5$aTt!O?$i*HQU@7oWHO&t);Cx@z>^K>ryl`uxh;b`l^j-UM zv&u0qZIw*P#{>nv75%d&zJSb%S1}=(@ZT1@S6}<&{g>_EZHwNN9x+aU8%L;F2E(Du z@M@NXjenJjLfgcunEO$La>E&2!yPc~yn%wnn}xC~8f4$x9n8?Ur*CCw9;Amh%iDH? zD}nBH%lZ=W>%8tk1JG-K4h>KF4H0@8Kzm=6n^JgunwmG881O{0+1T2)=S$PO@CxytkA> zrvL2icw83?_+mLI(PLw|%}X@v1E|NXYcRJGe&XkD7i%xdE3(G!+E zt6Q6hBCN+l+9xLU!>CCL_x{-^1M(Vz03erOJ-B}MR7qT>e~KI5!P{G$(*l5A-md)m zM&#&9@*2)NF1HdPRIm@zalZ#flYlk=4|{kl7>1~s;&&Uk_N{7k7kjh=FP$>;0; z-)DVLdq9=^1KNGcP5&?ceA3wt<1?k%-ap}!_P~H7AwdM-U|TNE61H$W;%7>nDQU*c z)tfhI-K<0Qn|21-c9LuU)mtpr!GW@3kOd8Xe7T5_nWGmo{hr#ysd2v2$|l;9xK;;XA=E4Vd3bim((j&<@2}MRN`bZ{wAD$e?X|{d z;4m~)k@(QiP-c9~YnKvjNpx#f*l@a23Nsx{AtIs!b&5`l{mh7n6q+HYNf6Q1dPm>YU$k9o+7+2f7sSx+>*Yk6c9;u#4wCbGGhB6|9fsvUcb?4j{4UNKoU8mvt{Aek>joZ8Y!yJvcdNT zT>6v$>Utu+(REGsRRGyFslqNeWLmiw^9TUiH+bZ>)z~$>c>CaCGQgqegUHl0*prk0 z7!LpxkFwo(Xz-S@sy_kN#}0=(T+;cQv6}X4LnE@p>2D1bq48Z<}Tds9DL#vWP+QkTcX}T z=>dR_yROw%weKe2U(MXO2mVUwYJd;t(FxkW9otq}XK|_n z09vza0CvU#BtJqZfW2#tm6_6WuKSX|=<0H`4X9DfD{Hvz2x za=YL)Kfs?QMC3ZX{dJ%zr2&u&S3FSj^9K{Z0(!wAUT%3#u6F`Lz5HzS^(c07P+Upf z$k^J}>VqC@6N){NkI2s2+ztSM3jq{sbq9c&mQJFOjOYUZdzxP%#-Q7-P9P4Y9>+?$ z_`d4Rs}YUSiR|tU5B(XG970r_RlPJNNm|idt`;1kUH9;)1LngS8RU#iJ*8#T-UQ{bn+=L#9BFuh zh3= zZNN{$quWi**dlYPUO-n*3YD|YGJe5f^BR!n8TYvP)NjaAi~am3X)2SwRb~^WD1Nk? z%RYf)-a?_#Gu9!`57UN>qGF?)OQRLKgjawZ96=BjH_`E*$4ak4HEQCNB^;=8lX~7a z$puPX5=PSv1!l1ri#W>2GdqaS_vl+}Lj&BhOMCngCnxsc>Ff9J_C2_KZt$<;53k)M ze7$pEW9=!z*V{)(WYWFfbA^x5rcT$y=U?A|;MWZzy?3=8)X~&XQ&N-`=3xk~M;q9m zwf*-)M~`>1W zU3mn9C7eB7#C45l+Zo8;Iw|RS!Lu5ckK5wAOV1uEU*5{IQ;S}#POmRLyK|tYjb~@R zHk9U2zMNf8p~5kZ{^200q4aFUHtG(h&FRmgG?t$IX)iUNX}q6P_cWKD?K{MRYPzLK zCt6F+zB?*~XcwG+%)8ZIc|P`I45HmHeee$SRoSRa$%5Ql-&o;61y18;NE$jPid6j2G(*@ja{GXLLMb`k&AZEyLTQ2v{ z3zuI-wdOqt9`l=&m>#eNgz>H%F)5)ha2S~d)E*BrctAFWQpiA0%^^$1Qr z+b|9y1+n1azI-sEk$Tm|7w{dF)=Cl{BuQ)V1M<@^*>t&(MhQX!92EGj6paL=pL^<2 zyo(x?DH55T*dGi;6yC>OIN>}pkP!MQI1tzf`V1mG5V(9ik{8I>XY#7|kKi?Yjvr9h zh<$}0@g?5GL%8U}uG1dL%f}-y2^km)0s=0D4?>qnTr6#Yj0N)cm^(kOW1`m%-$@l+{1hd)K!6Rk69X+llBu1WA(HHnV0yG{GbRxB$FB{Cf(45)cD1 zeTc;vK3~YFIsNR2?F)%2MaZ|#uG#F2As>_9IwVI%WJf-fj`C4iROw$G=G^~DHvD-V zlbvRghJ1FB7D$L}r~+z@MxmAHAi9ViqW9=0Dn>CxAsPX#t>yTX(k)Qyb#2B|LGF%b$7~?>}Zc(&{gyw@Js4Kcn=?NmI<={BnI!c~| zx*@5MY>cGhh6s8<>QTI24qk+tl5daPAc_L{AH-)Ajk0FwI>U-Di*}4tQB$L6^a+DC zqod@igtp?*f*_eDob`wb5$69qNR|Bb=l|9 znUbB$`vyH%;wDTp8J4^p?i9HiK5?m>xJFCCj|Dd`R&(?a84@L8Csh@G)Wu=WUSNtL zE)EnW`81r>Zq)#AXRX4txsqt)!a>#+<1DL22su@<3=_IZb`Ek?8v2D1v1*7Qh<@Sk zp}DLNpEyB6+)yeK_IdG`c_&sO`Pda1CD~$HYL2l26IV+{RyBw%#W!LQX$s9k3~wW? zW0R8>8Hu;J&Z<$OA^|f#oNJRVV6k`>Fk~AjPP0Va`tjRMqLDqv_{JF5TQv;a)&&^a zRqHVcjGhWD6k|W3w77(`aJC!9o>rcSi|%_We%=r?eeMrv@XT+ zWf%E5Pl{~Z4KZkcor`T_ufJO?h15lnYfU?T&Lg5CA%C^?EeOm--`>E8<)}ShAd=tY z<>T&zXhstBSbDCm7uh!M{wL*vyQk{vy=)tG^T}fMrdwSr>hoxR^r&^)$9^lcu z-S&N?o!M?5IfO9iS}ez~6Tp#->eT1upc2fVPi2=ow|T@ojhVqX_-d?Z#&y@h`0J;{ z`cziOpaTxpIJ1MSjvsH#^MJJ5i{DI+MM0A>8`)FwIkHSYS zMKW(tDu-yIfSutlyye1yCRN2DU;sPuFu$D7dmRz2T{=sdsCQ5TPtE8?ahi7|74ZuA z%0o{9-xX4Io)#f~V}jxn#=AumS8sFAVz4f2*#B1U=3-do(K#=*wUtY z71h96IfQSoHxi*Hqn{F^4N9#m=<5pN8=O1h+_3i}OEyvkTU zJjkDvfAy1t@aeywp;UKA2qG)tW&oeuUUTlaaFI%TNBlnSE*;C2hb~3FEPgkr8y16L z(FfdgcJx01eAhLq><8H7Z@Ge5;gI%GNG>ihopq3H0223vH=PL>9sPn&m2FXYP6LdC zT;SsiSD~;LpQ-0#%PD76l;Z)_1yfG}`tenD)YyP`YMt{~lL1ch23mpoimijrZ1%HHfhgMQH;o>^0!XL_&Y}SvROaL~%5(oil&4j9Mf8W=I(7K8W9Roi z>@m*ibq4F}QD@D@=@T8_W=l$LorkhoSFYruveOMf;g=nWbo{D8%U%||#Enh|7URP0 zt@+m|LHGgUxN}^$WVKAp`i<|uJXh;s z1~SoC&ySHJ&1^Px!ysRFlYFYjiPLaO=Zr7#C1$kF?aS5sW!*f}I4QWAJ*2p#*zzBf z>h8q4X7J(g2M|3QJ;${w!JD|=B{MmD&2h1js1c(QH+s9*IZ29{EK1!fJUI4*ztr!} zSm8}##y!{|T(Oz6hxRFJjK=R1HTXeswImJ62L=W$yrQteO@IcGhKmk>@VAV37SrFn z<~XV3C&pE97jpxuVNX+-D^H!pOU04 z|V)GQL$R;SKN5%p<|Uisl3E_ELGWNB$m@a3n8*&K(T<@YY}klTi9K z@M3+k&pgA^|C276=Poq$ujKW#t3IU%l&@20AJ;w&i*@w34`sE+@R;xwuD5$c{*zbO z+Bzi}i5t&gJW3qo5c*lgP_K`*!}&qkN?^?IkCyQ&!C4tZK?!eQ-t8R5cNA$XO)cK$ zpEH5`37RO;6j;U=eYOHKeh-4PvWa4@@$!x^w+GP_(2u+889vp^j7f;-9GrDmY+8PA zg8iPLAWZo8nJTuo@tII)J2#JragB>@pnx0}QZxmuvw8g#Zaa^RCMpig`1lvA+hPO^ z07jwh%sirmYs`Z;5r?p#qUrG>vbjxhwKvff=Yujn_Sx!J!o`5!8+zvwMV!;g_&7gv z3C(}$tg`uGlt8Q3@I45W@x`C0W_TN)3BNI%nk6sb9FKDOtu)Joo@C^-ht{G#!n@@` ztBfo9XeGm|1JR5|=Pt6(bjQQa;aPlUeAE&Diu-$WHFwu(zOx&= zJbGrsfXI>UR$^gGY2>hSow*QK zKdtd9Bt?CnJiWa>I$2f_nf&H7g__EBZ(`R=XjPF7ac?T?W=L|T`(B# zz+r?9RLhRDiHY{wi7_q&1b_9Dic#zU_HpeBoOhwr_FD!(0QH9J<752tx{W+D5;PT zWZqydezqz(!U$l#Kmv+U1K51u#uDu=7Z1X}_<2Xx)Un+gSvby~=jYo_zqH*FC7}_2 zkyrxeZK{7fG3QxQ6C<7_0{NxQaS4m>o2|r@OO%Y3Jo?R*@fpU(L1iVc8*D-2#uMqU z^Z@yj#msoL5M)0nE&I)8!4cXXFaOgVzLoxaYl%EhBZ&bpZ#n$Wdulg6RKy5i+>Z~^ zmpkHKve|eunpBq7+@f@#YJ*BDwHqo-^LG)tik$NGegF8N?j8b{Br;eX!vzWGmY%{g z!X6?Z1_5wVmmK{%^>-ebF^+kdD4&L=TR7yz+u7H^oOcAz1^+PtI7dlAJ9`D2pF13c zh^IgdFVX1KE3w<&!Ir6F%*>7S@(e)cqx%lf9wl`!1K9VFf@Z`(OwjBJ-$X=@5Q(Cy z)CK(CPP9&|f4(cm8?V#+42FzupNbz$vD`xnY!ZwYPs1s-)|Rj*EPOrU^+(N>r!$o) zTi;lt9%97l0+^nR4CRMAf=9-VZQXDm39uw)JXDnPI)B^?7KLrxYQ3bVJljJesaixU zK*S77_zrIl*5;@toYgP7{M|FNb78F*KsSC0n+0N|a#%&04mVRA%?NCbDVVo< zKM%)IGXp%*blfuM9TXX)7jxqS{nFs-7c3UKtt5WLMB^nnh9)g}8XfrsF*7p@;oQjG zT-^?sw7=xt<8n%Aoy@}BU6f#&y^F;smoedy&@zJ*S9qhzNtpfhD5*?Wz|~xU9{+=- zZg*Hx0u%7=p#uHo14~L+D;SO@e?(gcNtw+vUZ**g_^u;La%)3Cr?KE0Q!?+SZZ#=` z%W+p3B!0BanlCJFds9E+{U=Nn|7yFlf)LX4%_E8LxqwdBfFG}_6}Xe!K`NCM_7#}y9cGp)ao%YDD}B*mt!fXg1Q`udE*6mM8k3RA`%6rg`^nN^=z+)j$jN|9~c zFl@?f)(B#l@#vXR*rS>Sl_@*_bqPG&4w!=x0V%dwXPG>|l9pOwYe zPOUiEyn9nGI{oEpZM*$m;jAr-BCkY_uA}4inBq974Vf~Shwi5!*|Mk9LGG1rL2ySc znEUkfv1mLqw^jb+vBP`aITu>iiwu9N<-MXjef~VavgD7S9hrWIL>qmt)btPq=pP(f z^q9?ekNdkoD1G@ZV<<0fQ;_^yK{HP0zq&_8=D|vutH3UZ|4N@fXnq3N{PNoGE`hLe z4AZ!l68h-2wgGg-h37}>^9!n|z0mH_8Zf=L%CcXW#qyF1R>I((?VXv|zx#R~|EFjJ zJKAxty^2{gGMw*aqOL5qy8<-5Phs3gPp&o4p51n7#AIO2L-;fz$`O zRUfWv_ABfKOlMaG7$If+X&s)Y34up8TV_+`iv9Tp7EMfa=Vtm&fk zh9wn2ivQ98wx4wAVEGF?i@nHRQ9kJhUf%rCfoaDWNi_w*%3V~2<>N0F>8z|q-^=XE z;PSS)a_CUbLyueFF6^vUPzzQD>Cq-g{$97mH2n=&7VU2{6TYp{c|CK*E4cN8>0<{s z9c9)js8tjjv|t9;h?B{3qPMae=C7v^i;1jdcyNJQ$jS||my*)821>2^)C#hLjbQ&w zt9d1I1g&g`=`Y8I_>G5~$PG=ETF8zk;EIxWbOHN8rp8vqSykiC>f2h&`|emDl!1%y z>a@CaPj9v;touH_#T7~|bWFiY++Dwo6gwD*kk~Cb`>Zt!uvNoMZtX9>yDht`J-~G5sAU2IQ0!@jQU`^H-d_$m(I`VtkU8l7 z^nmo-JuEpk+MT2JnoEi&PIj@UKU#ZJr(?yom~JK(Q6KFGETe-fz&;$j6LeNfCRMr+RL9% zVc6ScXx11xAALSNs#!ST`gE6ZMZ30Y2$B7w;`jDXvSgARt%o%V zjC(u5d)(B?D3VheA$|Sv`FX{^t6|{SqCgCq+ghWY;On(CE%RBqC(pm*C;<76G+WH27&1kWQYT=sMx1U?8d9o=6(q-yPfu9{?~$6Z!6piV!) zUHrm2ecx@A#RdJaI}^R4Pj68C&*`O1B6c+(v4G`JuldytFOLd&RBY(|>4nYBhxl47 zd97iW$UaT~Rr9tEnf4)<> zJNxIQ?T$RK!WlO_@pMpdx4oPmjT7$NuS(?L0NBU_Y3`g22M9rtnYO<#a&T79lVh+; zP6YO-STqDbI(JY`WIumeW{!cD+zk^o$cCu!ahrytK_@8x6=?tFj)?hR@~JeD$@OsN z@98y11-~|}f6+WN3&le3CP>Tq#h;p8Y);8{DkSFvn%BP+qRdQMgtbHJUeDT56YWEH9XbCjh z{8aK{fE2Xpxs~9L3VmbI<%KiwA3@%;h?3O~OrDh&S0-1H8es;6>vf$B;N!M>+2 zVt#GAKKDmrIV#+|W-C@b~HzJcnV8(Ue!|<7pAoeRA5N!?Aap_6}(;gch_EC zG#x%IZ&y|=fu>)5ZR71Si&HkFwKY_=hNP;pfFHSJG2)i*W`$@~%MNyRNQa9QlfXI|MU z5*4fzJ?Q~Ah?qTirn2csGIdXXr(kj9oqc|Gxo><5c99D`KUTi!xFUZ1mACeb6xWue zlB~|AAmio2Pm-W5gyd*fN^MjqD)P=gC!W2ucpR3ap0w6;?TzSd6LCrLPtX0=_A9$m z%9;v6OR|2&6<^6bP&!*Y(e8bNwdTmHJN$6px!*=$K73lOoYr&3xV2jAB8=#*OM5;ZKuyMS5FiLi=(%7Bg12oN zK)OHq;_^q;C09*iZgpE}qalOzq$i(AstGi0`MJ@als!V`$euax8T6yWXGd?Ij+H1u zl$I*7>YIgk&BEFpKRo=-!G?&rEJe)CZ?jNc3M}6jVc>W{>;^3u!J3<$vQIcFXpTIz z#z!ao^u&&vr(g+uSW7!bucnsv=dH#1^)s;coaj$Z96Ra3wW7l2s9;)3c5Zcz1>{v; zN0_z}z))CN+Q0&KaCGulb_$v!k%!fa8S{gKy`J?g9F3V+hFhpoFi5rPnSTfMw2;xk zAgyMfgK_9z*!$TJ4t{vt!)ixGBIZuP%Iuw75 zvQB|$Pik7avy^!ytVOdfIRM6L&(3I1r@%hpO7bu8_Cw0NsEzHLn@%{>`^kmh`W5*n zVAC%aqhnhfd^A#jOVO_N*DgRx!7m3EUG%NbldCgrFKlbr95EMHrimMNda7$6FDK4exB*{PM+Rqw2IiQobUSxavVlu}Fvsdq6lLX}el2=f|~ zO9P-UY=NXEutUnu@@#NNd!v1w0^%Nllrl0>Qbf@uC1scIO!YM7w-jauN|PJ&3?##( z*93&4)n>@k<$%f(aJChuw^ZkYt;yr@Z}>A+qP}nwr$&1YP-GfZ3zO{#%%*g zl>~xtcFOG&JZ#%`+|9OawQbu?YTI^_Hm+^kwr$(CZELb^pB`hJ9Qz+AlN@DGw`oSZ z)s3ej9VySGzJel7nWSz|q`7jYiRiyWNs?rv`Y~bWaGN!Jf%tb6h!}{8SYE{DrPteJ zj63tJh~sS%m12{3l{IdQGd6ko@>U@QG9e3!K+z}}rJ)A@Vl(CZcY@(htN7yLCTo+| zDsqTKC=g|$o@fTzj?SY8=mYwPicl4*MHHeDNK1xx_y6wLRIXcpll#A1w}>2Cy-jh8 zV)cp)5g*x58#D_YLT^w`29YBTJ`yf7HWxbnAGJmy>qUlMYg3%j-^BK{qHbt?IVvO^ zw$Kz!%oJfrQ9RVKG;3*^aClvL!G_i*?nf3rylg)bqJ*2!b(BX~n&~=ofTCR#l%~rS z&~2d!=P$wkwcaG|<$P{o|4(5xisC91hvuTksG2ZDgs#)ND5!<509D5+q3XKpidS(y zyl}G_9|}aH&}~-9F!R;aRicTO6`EI}K-S(Q)NCV4M>{ujb17(qfh{y4glyjXYoidO zo2;UUgd5NeLP(3eqA8)85aQpkR}`&HLd!u?G#I^N{WPIy3L2(M$J*o35F`^)jFEBN z5<>48KdP&yfCXKweS7E@Q54AkAYP+rlyyPRcy_pKS_nx(osFW=D-6|yE;GBLYBN@J z(S$K1m;@j)J7g$8HH1{rpnxB@5OPC-M-;8NtFrFsCn1V*aEc*B@4#C0iX!quhY3MM zYsQuVnh=tHqbPduwaGdmuc9tIn|`|!Qz-i$UX>cY1PZMs?X8gaD6#-Z1ID(+(Z zvUtXYpN$%T%1BjPK-^qb5i!wnK2;E6QOt@+mT1LlUaO=}5rT+trrE3` zMaxc4REt)OW|Sp~Ac82fpcp8k5&e9w6_;VOiZLGaL#YhxA6rGDe$J1^;|eu;#n=p# zOHgeQ1>updB~iHx8{+U>W0NRrfyy~kkR!T$VH>f@sPR28WUWz^5|0$n6Qio;caSu_ zMQlmdoI3?OmQ~GeD_J!>W7AL>X9{>MDWBd@vTAfLb)#&~6!I`%n=>v}gTpHRJNl*| zO_*UaT>WEIh^VRI6|YgyPdQWY|la8jV?@@>?MRz2m+N^$zNz;2;rpX(yKR9L0hT#|#JH=8Ah3;d% z93y&5R<&shb@XRO(*!ftSiPaX){b@(gmhyp)CT}ArM2Me_*5hc&iK~JtS%{%<%nIO zsh@H5%g~A&^u~5h6tDR>3|1CbS(JJLU=cc9=n^o=DipfUH5k7Mn767)TNd*ln!4~O z)+t@;M*zTPR*zd#UB>Td7?EuD+%y2d_W2qL1^3OZ=#wT5;i#iWa>!0=NCQ~YV8zoM zjTaDP)Kcl29RnC8*<>(|+qAjVk!U{SF9TaLs-f;!)|Tzj5T~%s)w@tsa0B2}GH81M zP~Sl{8E`r*oqswCDHZ*DI#j>?5mSm3$R04O#yGU{HEbSp8LQh32kku{u^Z{AgYq%JYgnF7Ogh9jG#Uns zbVPDhUb~B_7YK-$HA*qIH@6G?03aFvzL1;DWoAqX*J3Y@M`y*(C0R)PBHJdu`;-D0 zkt|i$rG5BTjYTwtV{HJq?wkju93OKx3w^6xH9dfr|AU6x5HJ;eMmY*pTqF3hhfH0= zz)n1cJRAUOj{#P;F5Kp2Sq`o{oz(BfgOy2$-~X$YV(g2jNK{+8vw^v|t>#yNMIYBR zdI@mtGzRdf&y5?0WU=K}x}VDi5Ooy-MP{RWFUM^v-8sS7bIhuFUf2c&hrr|rynvUe ztk7K8pm^*kK;#oZeA7DeI&dYUD)og4sD{uK2H+OEG(G2tIbpjIAj~#s5FM<9$009*>58R!8s|xke zX6iSg2?b2}U#NJD9~Y)-ha-oKI>4B609WLYm?8XT!vF6E1M@o^rIEgP03j|4xKL@I z1c1aO95RmpV1NY7$hQUnFbLku5ICBY zU1xge5<*iLVIJFtKjHjNKm+Z*DP@r<>D5ZQgG(mi^@BdF)PX9{Q?{^-6^$6DpiQ={-Y13-Y?k;J3NypSMM z>N|Y9?W1!>QToYcKTTKeID`{iG=?CWqVd8y3ch{m1Vrl+NPIXtbMTgmi{}IjlsW@9 z`V4dF;Ds`YYm-PdW)r@Mi=P5ygh=b4>mYEfRpvZ6kotoizR3c>hj)aO8UyG!yyLuI zj8NuS5S-tRkN{?AiRb=)AW&I^2+-Krsb4Tj@hfix8@Njrkqk4A=rf6s@(5whxE$R# z+IAp@;#WrCM_t1tbz*iJT{S`l48h39#}=E9k55Z0Ss?0QQPc<|P#7b2KcLBC40-_K z^a!@XO0c^HiwZ`{nWJm!>DaiUR{)@9knoG3%{%Cxy$4|BbktIH0)R;cTV(1mnAnb3 zjPZWj5mZ>H_DyeyD1t+(j=OkF&l)vM=*mwq+4_9W{pmK3`TDIb@BWLEwE3)tlG!Gk z*1U;?4#F%ac2P2&I-`>>f~x>hHE^#ShezedDgv~+XY-3u>w0-zO;z1xu!rX>W$~&Q z`t?V7PTR+KTrRC`D)&XZ9f^MDGB%$(-&QRtxOE=J2L6)mxV*I3bE>%C=)M?LE(g{0 z8>xh!Ei@5#htEg;%Ibu&aBO|kiD?o)lbi0-%wJ&rc!tyO^F10_*+ae<~`$G!~G z$A6K0uj}i3+_IPXK)EeZ$fpuEJ)R90k;k~tIG%5tyn_Hs(f`>!ltBfEU<2oLv+NHs z;{k0Wi2@q9o3Zp&9uwk+d|bY`^_!6Xb(L&esrix}{8y8Lb33oIZ5RO214nz`WA(j; zqrhn!9#5Cya%(yuUHe7~n%PjEyvmg?ZY{wqez23SS&g$^6Sws)L><_Hqj1WkBWn@p zoD<5w+1SQ!lzzkq-mH$ee9O8-QTCcib5!>DUB3>iZI$Mo-GbXCjhR0aiI#JNCF_D@ zYuD5^Y6h4KK=j0!IBQ_)7X=bOfWKfgp=mtUipsLsZOex-_x9xV9bY?g)YGk?->rC% zEk_$g`;52m5x-2NWWiIHoJRJ(X9 zpO!zY@OGNls@r{YZ{g&At*^?V<&28qsQ+NW1Co7c-#Y%5=pa(l^PJ&ddGTzP55&u_ z;^CYauj`aKi`T6BL0x^(_4#W>W@Aei+{WPc*rDTRil~F$R87@st2b~d)tEr^;lUF0 zyAM*|vst`Zz&$}0{e;LU93WDXl2%PkEjr7QKNQRR_fhGnLI(0n_OnUft0z|n?KF@!)x^?N)QC+=#v&OZz z{XqOuF&O&o*_Kp3NDszYc~B_G-t}N z0i(78oYc_xio)z*YdUMJdA(_{4?=ZFZz^BXaO-0WV zQkdlES)X$!RNzQd7h3Qs)zwzoEU*5Ylp(+tq%d>S5gT_PV$^2 zHbfne(N-GcOFowBQGg3#=<*`m0He*3j0e&+tE8vLcim42J<`7B04Oo3@^hK|_#Y5n z5KmX(2UX*Tl_POTN!hlxQ_=e2sQgwcAO*tY>d!W^yj{SDe9Og2bS;KoWOo~UrKZ47+bxAWkGQ|qnsIQAz-!J+8`EhbfcvWekFKHO+HJB}*H z4>Rqa^D9BCpg_+YFKL<#FJ74`gI37I%8xYw(QAbKI6aao#1D(!O7EGxaN3dyBVJ4z zJa*{AoNLfxT=9p}`SCKo;oA;b76NvF{al~Qo}5A*e{=Yjd1GZ0zJk{OIL%}7-kNB5 zwtycWvqt~K5TLhyP(`@j5y)d2rLJNUF=QD2@1-7oJf3HGfnU^n9P#Y_oGwtV2SlIU zp_`cQc(f=O@bytP!^8M|xF^Q|nx&6%MDk-xPeb`Lkczj(tQ-aBA_Yw?L$5brG~9#B z3k#^Py^13aIA0YH56`j#Tcc3VKncBe^(FV6mV0t|01RN?LtJykeiFbBT`5*a!Si-S z$(htHr=rFBbI#V>LmZU&@IVQu<}4#x{P2KM`0PBTP zP>vl(Xc|NCuO&cBLgSpexCBxly8I{ev!5+X=f$(dpy<<;6j3yG80dGE8XmRf8s``i z{eTiKGKK!?Fi<>2!jH#@K>ouNSqX-PGya#X!*fqq<1W1lTD6KsmAp0OtJ# zAbW*1>Ia669hJ7O`vHF@k$HHaq-fzC@b3vu-93d4N#uz-i3d{9Uvrbl2zGc(b1td` zo;TThdrE?ohbF5pdDKjYLIJn6^cQLpxGLuaHs>(99lezivkfyEC8@b00sPg;au zVKz;Yha+&rg}U{f4nfLOcghy~+EgZszwtqe)-GM>I_wI(K{Co7!oh+yl(jGqsjfMm zd}3(p{grGdf8%|n&X+lteaEh_BJ9`4y(&Hj77vRqLs`dsY1xRnary30X#upXgR$xo@sjb!_ zh`qO3eRHc(+B8nVHy457uQiRpQUr(XujJtKvDD?c*d1x}vfggW3b7YgzG3MHlr~+1 z3t!#B|K|!D<5W~QSnLGYS9ZKvm$|>p z#+(%&LHK7n@a;A{2ABoESJA3_P8*I)FUYkHp{DtV&rMIchmVDORv3De5)2PuH9oG$%&&zQ6$Rh(2Mjv%>`jF8_F)+*yg{{p5Ev zfMwjt7*KUG;DbR9th)&lB^HYsQwT?<^8AQ~rR(M(@~S&Km8VU_zeb$1_Xvr1Mf85vw0UeQ-$mvHE(S+*ygMv%L~b5IpIYmm>IJehQI4Q0p^4 zpwaUepyLw=sc5J21SKWGnD1O8zkNxdO!;Zkm#wVX- zV%#j0G`CadmrQz4fX$-kGhe-?O>S`V^71y|tsikT5_V;$mk^rYRwL(D(hRZ_&2`@& zautou+dGy!WQB@6CCilieJr@PPw|~t$2f2?h*Ye!?$_BU9+}0l6p z`j|klc3XJ`Xj(>NV$N>uu5GXMo*h&A(L*4odJMj{1*}I0)zov7RVst*Kx5s0jxjHm z0GGFy;!c8{3i&9h1OIVQ*s&}?$M+pPbqAP0#@1B>69Os=SU=lqR&5M0X<6vPlwpef zyap{zLSSt<`qsXC=q?MW419G}?jG>z5R`SnuFJ6%ljW`jlN=mQ0@@`Le@*+V?;Xi% zZ}IcpIVy#K5S07-LcJs0Bi=0nCYR40CLiAXQn<7+o%k(hK01CmEIMaDKTujYcaF-7 z4J4pF%2M*Ty{1(~1CPMIXSTj^W|TM2BciV@L$B($4K6vVUS^q1;i~lOZ!PE#3Xbo% zb}qKMaDYftQwB)Jq!$r?Z3MotJwDT3%k#pkhL+zzFxdOvxg0Wrht!*y`aDMbwP`s0 z2{@AW^XKhRy#=J8JJ?e4#LSU@u0=g2KmA^c!q0@={y(}&$-x%T* z321NcA07e`UG~pJEbS6Ls$DC-d&0Ey_5qn?yqa198$sr8Z^_zz;q}>wrDU|w;nGgP zDfht1-k6QtL^Vnv1V!3G*7%cRdp@6!dZB|RQ*q|o6B6TZ1B1(=oTlmvZ~~Z)2!XIi zW%m8D5CR`GnT3u&9@@C_a9c$J-|MbgJ)lWBEVS@Ntp@yEC#w^3!j?Jc;(bQD!hcF} z@|o1@0cj@q9UX3ZP5XXcA&)I{(KY);T}?+tG-T#B1|6dM;Rt$kpacI~Ot0n|@jD*Li}BritP6)cPUd&~VeMI`;m%CYA{Dp)Q(i?CjlaT9@aq_3$UC zJsk9TzXbbpT6O=jF@_S}&{qeh;H>XYZ5KMqo@ZB_uKwpi;NH-KGS7SNj-~^GyX`4@ z98P@QiMGHZ-4#7_zJfunG!Ooox{#uKVomdQzfi5Md6zpNHZ*J&U zF&qCDz+Oev99&ZIg)L!ju$ShfwCcD|#bba#=gbGo{t+S5>-uziHwKHa#f7!HW!s9# z53lQQ3hi{~J9Qq;#AE=wu?*B;Ol}*tpCin9hv@I^?pHYrUM;pevzA8PufM+k4zY!a zYm%F5${K_0#Al>}INJ{XN$V<2Z|v9k#fmGjHGtRt8TC5bkRvU{M=u!Ti(~oKO3w0e>^O|dNJqjL)QA9l` z{NU>j4?EaZ80LO$-!pCwsGW%fd<=TVv2Ql|*8b%7s|JL^oTZ{W#qRgSIJ)J?}8W~0Yr=beTAb*Dal+n7*cWpNUt>MU|LEH^$z1YJG^h1(J< z!(3sWca1vzPM@lYScGaOTCeGBL~omd-c>)l`=8r?(Un+Smk&Bd^~vvW6>~vlZ*Yf) z9_*|%g!VvUyE-wayxCc6 zNM$m)6K9ca0&R0%PIy@2elAmJ|AhBW`0>RHy}zG@B`89amMy6@H-qe%ixoS6bn#si z4Ixu;qL`D{oXK{{skm=~!1aK{1v)T+e@<57LGCc8DfF;rADj2H>pOox9aqCkw4BH2 zRrGTHytPEXdNx*E7By7W>#zAi%cj`F{uX9LnfGfK#*1$3zUO==$}C=RY#% z;Vr{FAyXS?Y1S@xLo;V5*CnWp)1Cr>5F8%b#!<`)$ECh{(C63v>{?py(i=9cT!exm z(vp#(Wf+j7mSILl3nBZg>!xE2`jvM38vNY)R}DTkEyO6rZ5-iYNy#a8C;v`Zn|fV> zA57)$UEyJE90$2enZLl>k4k-UFUz+MoOZkG=N|b3D}9r(aphHL-4+EeN7U~t*t2^5 z2Qzd=P?^v4fcrz}CiI znp|iyg+iMSPrCj!LnG#XVZ(Qh{p{M=kGs6<_VuFQJ^%I2?wi*?e?b1uKH0thUGn?9 zuU+5PpK|rPN58NkV%~;_w>&&~Qz&FI6(*NvfsIkX%=mLHjXwFE05`zm*g=_TuPBG0 z90&;yZ)4xjSzLNY7i$fLwr~35{z-Rjc)#WkZ~N%>PwIGG`XAi8%l^1&dnm+uvr3D1 zwXsVjId$a~_RMUKA6W7`K?)AW4m?(Hf)5zMmnnf2Y~f+y5pA6NIS-FKI28zuE53tjX5p8Z3=AekE=YIHgpNr5+@@T314iGZS=vzuj(6 zOJjU~e`}_*Cc#y!E33D7QaLpqCGHS7C62Yx&tR;bsXmAmetoAEFMoI$II6E qlsL%BX$|^(KAX*!%Aw6>^Z9&1wpWoit}1cp;4+<|gCRE$%bEy>TzBpO diff --git a/composeApp/src/androidMain/res/values/strings.xml b/composeApp/src/androidMain/res/values/strings.xml index f40fa047..1c8d68cd 100644 --- a/composeApp/src/androidMain/res/values/strings.xml +++ b/composeApp/src/androidMain/res/values/strings.xml @@ -1,5 +1,5 @@ a - Torch + Mantra Channels watcher Shows up when you need to start Phoenix. diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/Platform.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/Platform.kt deleted file mode 100644 index 5e24df7b..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/Platform.kt +++ /dev/null @@ -1,7 +0,0 @@ -package at.torch.compose - -interface Platform { - val name: String -} - -expect fun getPlatform(): Platform \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/PlatformContext.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/PlatformContext.kt deleted file mode 100644 index 6e1e2fed..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/PlatformContext.kt +++ /dev/null @@ -1,3 +0,0 @@ -package at.torch.compose - -expect class PlatformContext \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/TorchGlobal.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/TorchGlobal.kt deleted file mode 100644 index 15ef4008..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/TorchGlobal.kt +++ /dev/null @@ -1,5 +0,0 @@ -package at.torch.compose - -class TorchGlobal( - val platformContext: PlatformContext -) \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/TorchDatabase.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/database/TorchDatabase.kt deleted file mode 100644 index 87d8c96b..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/TorchDatabase.kt +++ /dev/null @@ -1,209 +0,0 @@ -package at.torch.compose.database - -import androidx.room3.Database -import androidx.room3.RoomDatabase -import androidx.room3.TypeConverters -import androidx.room3.immediateTransaction -import androidx.room3.useWriterConnection -import at.torch.compose.database.converters.TorchConverters -import at.torch.compose.database.dao.BroadcastNostrEventReceiptDao -import at.torch.compose.database.dao.BroadcastNostrEventRequestDao -import at.torch.compose.database.dao.ChatMessageBroadcastNostrEventReceiptRelationDao -import at.torch.compose.database.dao.ChatMessageBroadcastNostrEventRequestRelationDao -import at.torch.compose.database.dao.ChatMessageDao -import at.torch.compose.database.dao.ChatMessageNostrEventRelationDao -import at.torch.compose.database.dao.ChatRoomDao -import at.torch.compose.database.dao.ConnectionDao -import at.torch.compose.database.dao.GiftWrapMessageDao -import at.torch.compose.database.dao.GiftWrapPayloadDao -import at.torch.compose.database.dao.GiftWrapSealDao -import at.torch.compose.database.dao.InReplyToRelationDao -import at.torch.compose.database.dao.MarmotCommitResultDao -import at.torch.compose.database.dao.MarmotOutboundDao -import at.torch.compose.database.dao.MarmotGroupEventDao -import at.torch.compose.database.dao.MarmotInnerEventDao -import at.torch.compose.database.dao.MarmotKeyPackageBundleDao -import at.torch.compose.database.dao.MarmotKeyPackageDao -import at.torch.compose.database.dao.MarmotRetainedEpochSecretDao -import at.torch.compose.database.dao.MentionDao -import at.torch.compose.database.dao.NegentropySynchronizeRequestDao -import at.torch.compose.database.dao.NegentropySynchronizeResultDao -import at.torch.compose.database.dao.NostrDao -import at.torch.compose.database.dao.NostrEventDao -import at.torch.compose.database.dao.NostrEventRelayDao -import at.torch.compose.database.dao.NostrNip17Dao -import at.torch.compose.database.dao.ParticipantDao -import at.torch.compose.database.dao.PostDao -import at.torch.compose.database.dao.ProfileDao -import at.torch.compose.database.dao.QuotedRelationDao -import at.torch.compose.database.dao.ReactionDao -import at.torch.compose.database.dao.RecentSearchDao -import at.torch.compose.database.dao.RelayDao -import at.torch.compose.database.dao.RepostedRelationDao -import at.torch.compose.database.dao.SynchronizeNostrEventRequestDao -import at.torch.compose.database.dao.SynchronizeNostrEventResultDao -import at.torch.compose.database.dao.UnsignedNostrEventDao -import at.torch.compose.database.dao.ZapDao -import at.torch.compose.database.model.BroadcastNostrEventReceipt -import at.torch.compose.database.model.BroadcastNostrEventRequest -import at.torch.compose.database.model.ChatMessage -import at.torch.compose.database.model.ChatMessageBroadcastNostrEventReceiptRelation -import at.torch.compose.database.model.ChatMessageBroadcastNostrEventRequestRelation -import at.torch.compose.database.model.ChatMessageNostrEventRelation -import at.torch.compose.database.model.ChatRoom -import at.torch.compose.database.model.Connection -import at.torch.compose.database.model.GiftWrapMessage -import at.torch.compose.database.model.GiftWrapPayload -import at.torch.compose.database.model.GiftWrapSeal -import at.torch.compose.database.model.InReplyToRelation -import at.torch.compose.database.model.MarmotCommitResult -import at.torch.compose.database.model.MarmotGroupEvent -import at.torch.compose.database.model.MarmotInnerEvent -import at.torch.compose.database.model.MarmotKeyPackage -import at.torch.compose.database.model.MarmotKeyPackageBundle -import at.torch.compose.database.model.MarmotRetainedEpochSecret -import at.torch.compose.database.model.Mention -import at.torch.compose.database.model.NegentropySynchronizeRequest -import at.torch.compose.database.model.NegentropySynchronizeResult -import at.torch.compose.database.model.NostrEvent -import at.torch.compose.database.model.NostrEventRelay -import at.torch.compose.database.model.Participant -import at.torch.compose.database.model.Post -import at.torch.compose.database.model.Profile -import at.torch.compose.database.model.QuotedRelation -import at.torch.compose.database.model.Reaction -import at.torch.compose.database.model.RecentSearch -import at.torch.compose.database.model.Relay -import at.torch.compose.database.model.RepostedRelation -import at.torch.compose.database.model.SynchronizeNostrEventRequest -import at.torch.compose.database.model.SynchronizeNostrEventResult -import at.torch.compose.database.model.UnsignedNostrEvent -import at.torch.compose.database.model.Zap -import kotlin.time.Instant - -val GENESIS_AT = Instant.fromEpochMilliseconds(1231006505000L) - -@Database( - entities = [ - BroadcastNostrEventReceipt::class, - BroadcastNostrEventRequest::class, - Connection::class, - ChatMessage::class, - ChatMessageBroadcastNostrEventRequestRelation::class, - ChatMessageBroadcastNostrEventReceiptRelation::class, - ChatMessageNostrEventRelation::class, - ChatRoom::class, - GiftWrapMessage::class, - GiftWrapSeal::class, - GiftWrapPayload::class, - InReplyToRelation::class, - MarmotCommitResult::class, - MarmotGroupEvent::class, - MarmotInnerEvent::class, - MarmotKeyPackage::class, - MarmotKeyPackageBundle::class, - MarmotRetainedEpochSecret::class, - Mention::class, - NegentropySynchronizeRequest::class, - NegentropySynchronizeResult::class, - NostrEvent::class, - NostrEventRelay::class, - Participant::class, - Post::class, - Profile::class, - QuotedRelation::class, - Reaction::class, - RecentSearch::class, - Relay::class, - RepostedRelation::class, - SynchronizeNostrEventRequest::class, - SynchronizeNostrEventResult::class, - UnsignedNostrEvent::class, - Zap::class - ], - version = 1 -) -@TypeConverters(TorchConverters::class) -abstract class TorchDatabase: RoomDatabase() { - abstract fun broadcastNostrEventReceiptDao(): BroadcastNostrEventReceiptDao - abstract fun broadcastNostrEventRequestDao(): BroadcastNostrEventRequestDao - - abstract fun chatMessageDao(): ChatMessageDao - - abstract fun chatMessageBroadcastNostrEventRequestRelationDao(): ChatMessageBroadcastNostrEventRequestRelationDao - - abstract fun chatMessageBroadcastNostrEventReceiptRelationDao(): ChatMessageBroadcastNostrEventReceiptRelationDao - - abstract fun chatMessageNostrEventRelationDao(): ChatMessageNostrEventRelationDao - - abstract fun chatRoomDao(): ChatRoomDao - - abstract fun connectionDao(): ConnectionDao - - abstract fun giftWrapMessageDao(): GiftWrapMessageDao - - abstract fun giftWrapSealDao(): GiftWrapSealDao - - abstract fun giftWrapPayloadDao(): GiftWrapPayloadDao - - abstract fun inReplyToRelationDao(): InReplyToRelationDao - - abstract fun marmotCommitResultDao(): MarmotCommitResultDao - - abstract fun marmotGroupEventDao(): MarmotGroupEventDao - - abstract fun marmotInnerEventDao(): MarmotInnerEventDao - - abstract fun marmotKeyPackageBundleDao(): MarmotKeyPackageBundleDao - - abstract fun marmotKeyPackageDao(): MarmotKeyPackageDao - - abstract fun marmotOutboundDao(): MarmotOutboundDao - - abstract fun marmotRetainedEpochSecretDao(): MarmotRetainedEpochSecretDao - - abstract fun mentionDao(): MentionDao - - abstract fun negentropySynchronizeRequestDao(): NegentropySynchronizeRequestDao - - abstract fun negentropySynchronizeResultDao(): NegentropySynchronizeResultDao - - abstract fun nostrDao(): NostrDao - - abstract fun nostrEventDao(): NostrEventDao - - abstract fun nostrEventRelayDao(): NostrEventRelayDao - - abstract fun nostrNip17Dao(): NostrNip17Dao - - abstract fun participantDao(): ParticipantDao - - abstract fun postDao(): PostDao - - abstract fun profileDao(): ProfileDao - - abstract fun quotedRelationDao(): QuotedRelationDao - - abstract fun reactionDao(): ReactionDao - - abstract fun recentSearchDao(): RecentSearchDao - - abstract fun relayDao(): RelayDao - - abstract fun repostedRelationDao(): RepostedRelationDao - - abstract fun synchronizeNostrEventRequestDao(): SynchronizeNostrEventRequestDao - - abstract fun synchronizeNostrEventResultDao(): SynchronizeNostrEventResultDao - - abstract fun unsignedNostrEventDao(): UnsignedNostrEventDao - abstract fun zapDao(): ZapDao - - suspend fun wipeData() { - useWriterConnection { transactor -> - transactor.immediateTransaction { - // TODO: Actually delete the data... - } - } - } -} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/builder/PlatformDatabaseBuilder.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/database/builder/PlatformDatabaseBuilder.kt deleted file mode 100644 index 40450e3e..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/builder/PlatformDatabaseBuilder.kt +++ /dev/null @@ -1,21 +0,0 @@ -package at.torch.compose.database.builder - -import androidx.room3.RoomDatabase -import androidx.sqlite.driver.bundled.BundledSQLiteDriver -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.IO - -expect object PlatformDatabaseBuilder { - fun getDatabaseBuilder(platformContext: at.torch.compose.PlatformContext): RoomDatabase.Builder - - fun getInMemoryDatabaseBuilder(platform: at.torch.compose.PlatformContext): RoomDatabase.Builder -} - -fun getRoomDatabase( - builder: RoomDatabase.Builder -): at.torch.compose.database.TorchDatabase { - return builder - .setDriver(BundledSQLiteDriver()) - .setQueryCoroutineContext(Dispatchers.IO) - .build() -} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/BroadcastNostrEventReceiptDao.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/BroadcastNostrEventReceiptDao.kt deleted file mode 100644 index b3f20428..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/BroadcastNostrEventReceiptDao.kt +++ /dev/null @@ -1,21 +0,0 @@ -package at.torch.compose.database.dao - -import androidx.room3.Dao -import androidx.room3.Query -import androidx.room3.Upsert -import kotlinx.coroutines.flow.Flow - -@Dao -interface BroadcastNostrEventReceiptDao { - @Query("SELECT * FROM BroadcastNostrEventReceipt") - fun getAllBroadcastNostrEventReceipts(): List - - @Query("SELECT * FROM BroadcastNostrEventReceipt WHERE id = :id") - fun getBroadcastNostrEventReceiptById(id: Long): Flow - - @Query("SELECT * FROM BroadcastNostrEventReceipt WHERE nostrEventId = :nostrEventId") - fun getBroadcastNostrEventReceiptByNostrEventId(nostrEventId: String): Flow - - @Upsert - suspend fun upsert(broadcastNostrEventReceipt: at.torch.compose.database.model.BroadcastNostrEventReceipt): Long -} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ChatMessageNostrEventRelationDao.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ChatMessageNostrEventRelationDao.kt deleted file mode 100644 index 7ec91295..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ChatMessageNostrEventRelationDao.kt +++ /dev/null @@ -1,11 +0,0 @@ -package at.torch.compose.database.dao - -import androidx.room3.Dao -import androidx.room3.Upsert - -@Dao -interface ChatMessageNostrEventRelationDao { - - @Upsert - suspend fun upsert(chatMessageNostrEventRelation: at.torch.compose.database.model.ChatMessageNostrEventRelation) -} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/GiftWrapMessageDao.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/GiftWrapMessageDao.kt deleted file mode 100644 index b9055781..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/GiftWrapMessageDao.kt +++ /dev/null @@ -1,15 +0,0 @@ -package at.torch.compose.database.dao - -import androidx.room3.Dao -import androidx.room3.Query -import androidx.room3.Upsert - -@Dao -interface GiftWrapMessageDao { - @Query("SELECT * FROM GiftWrapMessage") - fun getAllGiftWrapMessages(): List - - @Upsert - suspend fun upsert(giftWrapMessage: at.torch.compose.database.model.GiftWrapMessage) - -} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/GiftWrapSealDao.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/GiftWrapSealDao.kt deleted file mode 100644 index 42e23c0d..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/GiftWrapSealDao.kt +++ /dev/null @@ -1,15 +0,0 @@ -package at.torch.compose.database.dao - -import androidx.room3.Dao -import androidx.room3.Query -import androidx.room3.Upsert - -@Dao -interface GiftWrapSealDao { - @Query("SELECT * FROM GiftWrapSeal") - fun getAllGiftWrapSeals(): List - - @Upsert - suspend fun upsert(giftWrapSeal: at.torch.compose.database.model.GiftWrapSeal) - -} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MarmotGroupEventDao.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MarmotGroupEventDao.kt deleted file mode 100644 index 4ced8b8d..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MarmotGroupEventDao.kt +++ /dev/null @@ -1,15 +0,0 @@ -package at.torch.compose.database.dao - -import androidx.room3.Dao -import androidx.room3.Query -import androidx.room3.Upsert -import at.torch.compose.database.model.MarmotGroupEvent -import at.torch.compose.database.model.MarmotInnerEvent -import kotlinx.coroutines.flow.Flow - -@Dao -interface MarmotGroupEventDao { - - @Upsert - suspend fun upsert(marmotGroupEvent: MarmotGroupEvent) -} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/NegentropySynchronizeResultDao.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/NegentropySynchronizeResultDao.kt deleted file mode 100644 index 8c23a3a0..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/NegentropySynchronizeResultDao.kt +++ /dev/null @@ -1,10 +0,0 @@ -package at.torch.compose.database.dao - -import androidx.room3.Dao -import androidx.room3.Upsert - -@Dao -interface NegentropySynchronizeResultDao { - @Upsert - fun upsert(negentropySynchronizeResult: at.torch.compose.database.model.NegentropySynchronizeResult) -} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/NostrEventRelayDao.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/NostrEventRelayDao.kt deleted file mode 100644 index 0ed8225f..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/NostrEventRelayDao.kt +++ /dev/null @@ -1,12 +0,0 @@ -package at.torch.compose.database.dao - -import androidx.room3.Dao -import androidx.room3.Upsert - -@Dao -interface NostrEventRelayDao { - - @Upsert - suspend fun upsert(nostrEventRelay: at.torch.compose.database.model.NostrEventRelay) - -} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/PostDao.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/PostDao.kt deleted file mode 100644 index 82c3de48..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/PostDao.kt +++ /dev/null @@ -1,21 +0,0 @@ -package at.torch.compose.database.dao - -import androidx.room3.Dao -import androidx.room3.Insert -import androidx.room3.Query -import androidx.room3.Upsert - -@Dao -interface PostDao { - @Query("SELECT * FROM Post") - fun getAllPosts(): List - - @Query("SELECT * FROM Post WHERE id = :id") - fun getPostById(id: String): at.torch.compose.database.model.Post? - - @Insert - suspend fun insert(post: at.torch.compose.database.model.Post) - - @Upsert - suspend fun upsert(post: at.torch.compose.database.model.Post) -} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ReactionDao.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ReactionDao.kt deleted file mode 100644 index 55fd85d2..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ReactionDao.kt +++ /dev/null @@ -1,18 +0,0 @@ -package at.torch.compose.database.dao - -import androidx.room3.Dao -import androidx.room3.Query -import androidx.room3.Upsert -import kotlinx.coroutines.flow.Flow - -@Dao -interface ReactionDao { - @Query("SELECT * FROM Reaction") - fun getAllReactions(): List - - @Query("SELECT * FROM Reaction WHERE id = :id") - fun getReactionById(id: String): Flow - - @Upsert - suspend fun upsert(reaction: at.torch.compose.database.model.Reaction) -} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/RecentSearchDao.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/RecentSearchDao.kt deleted file mode 100644 index 5ee4b19e..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/RecentSearchDao.kt +++ /dev/null @@ -1,22 +0,0 @@ -package at.torch.compose.database.dao - -import androidx.room3.Dao -import androidx.room3.Delete -import androidx.room3.Query -import androidx.room3.Upsert -import kotlinx.coroutines.flow.Flow - -@Dao -interface RecentSearchDao { - @Query("SELECT * FROM RecentSearch WHERE `query` = :query") - fun observeRecentSearchByQuery(query: String): Flow - - @Query("SELECT * FROM RecentSearch ORDER BY createdAt DESC LIMIT :limit ") - fun getAllRecentSearches(limit: Int = 21): List - - @Delete - fun deleteRecentSearch(recentSearch: at.torch.compose.database.model.RecentSearch) - - @Upsert - suspend fun upsert(recentSearch: at.torch.compose.database.model.RecentSearch) -} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/RelayDao.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/RelayDao.kt deleted file mode 100644 index 25614a67..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/RelayDao.kt +++ /dev/null @@ -1,19 +0,0 @@ -package at.torch.compose.database.dao - -import androidx.room3.Dao -import androidx.room3.Query -import androidx.room3.Upsert -import kotlinx.coroutines.flow.Flow - -@Dao -interface RelayDao { - @Query("SELECT * FROM Relay") - fun getAllPosts(): List - - @Query("SELECT * FROM Relay WHERE publicKey = :publicKey") - fun observePublicKeyRelays(publicKey: String): Flow> - - @Upsert - suspend fun upsert(relay: at.torch.compose.database.model.Relay) - -} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/RepostedRelationDao.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/RepostedRelationDao.kt deleted file mode 100644 index 4210552d..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/RepostedRelationDao.kt +++ /dev/null @@ -1,20 +0,0 @@ -package at.torch.compose.database.dao - -import androidx.room3.Dao -import androidx.room3.Query -import androidx.room3.Upsert - -@Dao -interface RepostedRelationDao { - @Query("SELECT * FROM RepostedRelation") - fun getAllReposts(): List - - @Query("SELECT * FROM RepostedRelation WHERE repostingNostrEventId = :repostingNostrEventId") - fun getRepostByRepostingId(repostingNostrEventId: String): at.torch.compose.database.model.RepostedRelation? - - @Query("SELECT * FROM RepostedRelation WHERE repostedNostrEventId = :repostedNostrEventId") - fun getRepostByRepostedId(repostedNostrEventId: String): at.torch.compose.database.model.RepostedRelation? - - @Upsert - suspend fun upsert(repostedRelation: at.torch.compose.database.model.RepostedRelation) -} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/SynchronizeNostrEventResultDao.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/SynchronizeNostrEventResultDao.kt deleted file mode 100644 index 5c1a7d30..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/SynchronizeNostrEventResultDao.kt +++ /dev/null @@ -1,10 +0,0 @@ -package at.torch.compose.database.dao - -import androidx.room3.Dao -import androidx.room3.Upsert - -@Dao -interface SynchronizeNostrEventResultDao { - @Upsert - fun upsert(synchronizeNostrEventResult: at.torch.compose.database.model.SynchronizeNostrEventResult) -} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalBroadcastNostrEventRequest.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalBroadcastNostrEventRequest.kt deleted file mode 100644 index 5a662ae2..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalBroadcastNostrEventRequest.kt +++ /dev/null @@ -1,14 +0,0 @@ -package at.torch.compose.database.model.intermdiate - -import androidx.room3.Embedded -import androidx.room3.Relation - -data class LocalBroadcastNostrEventRequest( - @Embedded val broadcastNostrEventRequest: at.torch.compose.database.model.BroadcastNostrEventRequest, - - @Relation( - parentColumns = ["nostrEventId"], - entityColumns = ["id"] - ) - val nostrEvent: at.torch.compose.database.model.NostrEvent, -) diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalChatMessage.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalChatMessage.kt deleted file mode 100644 index f98960c8..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalChatMessage.kt +++ /dev/null @@ -1,34 +0,0 @@ -package at.torch.compose.database.model.intermdiate - -import androidx.room3.Embedded -import androidx.room3.Relation - -data class LocalChatMessage( - @Embedded val chatMessage: at.torch.compose.database.model.ChatMessage, - - @Relation( - parentColumns = ["senderPublicKey"], - entityColumns = ["publicKey"] - ) - val profile: at.torch.compose.database.model.Profile?, - - @Relation( - parentColumns = ["id"], - entityColumns = ["chatMessageId"] - ) - val chatMessageBroadcastNostrEventReceiptRelation: at.torch.compose.database.model.ChatMessageBroadcastNostrEventReceiptRelation? = null, - - - @Relation( - parentColumns = ["id"], - entityColumns = ["chatMessageId"] - ) - val chatMessageBroadcastNostrEventRequestRelation: at.torch.compose.database.model.ChatMessageBroadcastNostrEventRequestRelation? = null, - - - @Relation( - parentColumns = ["id"], - entityColumns = ["chatMessageId"] - ) - val chatMessageNostrEventRelation: at.torch.compose.database.model.ChatMessageNostrEventRelation? = null, -) diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/typealiases/HexArray.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/typealiases/HexArray.kt deleted file mode 100644 index 16dc2494..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/typealiases/HexArray.kt +++ /dev/null @@ -1,4 +0,0 @@ -package at.torch.compose.database.model.typealiases - -typealias HexArray = Array - diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/typealiases/KindArray.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/typealiases/KindArray.kt deleted file mode 100644 index e8c26996..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/typealiases/KindArray.kt +++ /dev/null @@ -1,3 +0,0 @@ -package at.torch.compose.database.model.typealiases - -typealias KindArray = Array \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/typealiases/SynchronizationFilterArray.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/typealiases/SynchronizationFilterArray.kt deleted file mode 100644 index de7d4349..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/typealiases/SynchronizationFilterArray.kt +++ /dev/null @@ -1,3 +0,0 @@ -package at.torch.compose.database.model.typealiases - -typealias SynchronizationFilterArray = Array \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/repository/DatabasePostRepository.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/database/repository/DatabasePostRepository.kt deleted file mode 100644 index 77226a13..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/repository/DatabasePostRepository.kt +++ /dev/null @@ -1,5 +0,0 @@ -package at.torch.compose.database.repository - -class DatabasePostRepository( - private val database: at.torch.compose.database.TorchDatabase -): at.torch.compose.repository.PostRepository \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/repository/DatabaseSearchRepository.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/database/repository/DatabaseSearchRepository.kt deleted file mode 100644 index f253569c..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/repository/DatabaseSearchRepository.kt +++ /dev/null @@ -1,12 +0,0 @@ -package at.torch.compose.database.repository - -class DatabaseSearchRepository( - private val database: at.torch.compose.database.TorchDatabase -): at.torch.compose.repository.SearchRepository { - - override suspend fun submitSearch(synchronizeNostrEventRequests: List) { - database.synchronizeNostrEventRequestDao().insert( - synchronizeNostrEventRequests = synchronizeNostrEventRequests - ) - } -} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/GiftWrapImpersonationException.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/GiftWrapImpersonationException.kt deleted file mode 100644 index 75ba9e61..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/GiftWrapImpersonationException.kt +++ /dev/null @@ -1,3 +0,0 @@ -package at.torch.compose.exceptions - -open class GiftWrapImpersonationException(message: String? = null, cause: Throwable? = null) : Exception(message, cause) \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/GiftWrapPayloadUnsupportedException.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/GiftWrapPayloadUnsupportedException.kt deleted file mode 100644 index 4a6c2366..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/GiftWrapPayloadUnsupportedException.kt +++ /dev/null @@ -1,3 +0,0 @@ -package at.torch.compose.exceptions - -open class GiftWrapPayloadUnsupportedException(message: String? = null, cause: Throwable? = null) : Exception(message, cause) \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/GiftWrapSealDecryptionException.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/GiftWrapSealDecryptionException.kt deleted file mode 100644 index 883b3508..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/GiftWrapSealDecryptionException.kt +++ /dev/null @@ -1,3 +0,0 @@ -package at.torch.compose.exceptions - -open class GiftWrapSealDecryptionException(message: String? = null, cause: Throwable? = null) : Exception(message, cause) \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/GiftWrapUnsealException.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/GiftWrapUnsealException.kt deleted file mode 100644 index c4d075fa..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/GiftWrapUnsealException.kt +++ /dev/null @@ -1,3 +0,0 @@ -package at.torch.compose.exceptions - -open class GiftWrapUnsealException(message: String? = null, cause: Throwable? = null) : Exception(message, cause) \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/InvalidNostrPrivateKeyException.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/InvalidNostrPrivateKeyException.kt deleted file mode 100644 index 673f5eb0..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/InvalidNostrPrivateKeyException.kt +++ /dev/null @@ -1,3 +0,0 @@ -package at.torch.compose.exceptions - -class InvalidNostrPrivateKeyException: RuntimeException() \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/SignatureException.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/SignatureException.kt deleted file mode 100644 index 8523bae8..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/SignatureException.kt +++ /dev/null @@ -1,3 +0,0 @@ -package at.torch.compose.exceptions - -open class SignatureException(message: String? = null, cause: Throwable? = null) : Exception(message, cause) \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/SigningRejectedException.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/SigningRejectedException.kt deleted file mode 100644 index 7fd60b01..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/SigningRejectedException.kt +++ /dev/null @@ -1,3 +0,0 @@ -package at.torch.compose.exceptions - -class SigningRejectedException(message: String? = null, cause: Throwable? = null) : SignatureException(message, cause) \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/managers/AuxDatabaseManager.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/managers/AuxDatabaseManager.kt deleted file mode 100644 index fc59592d..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/managers/AuxDatabaseManager.kt +++ /dev/null @@ -1,26 +0,0 @@ -package at.torch.compose.managers - -class AuxDatabaseManager( - torchGlobal: at.torch.compose.TorchGlobal -) { - val auxDatabase by lazy { - _root_ide_package_.at.torch.compose.database.builder.getRoomDatabase( - at.torch.compose.database.builder.PlatformDatabaseBuilder.getDatabaseBuilder( - torchGlobal.platformContext - ) - ) - } - - /** - * Dynamic data like user feeds and the likes will be in a in-memory db. - * - * We may also decide to just use the normal DB and manage what's saved better... - */ - val inMemoryAuxDatabase by lazy { - _root_ide_package_.at.torch.compose.database.builder.getRoomDatabase( - at.torch.compose.database.builder.PlatformDatabaseBuilder.getInMemoryDatabaseBuilder( - torchGlobal.platformContext - ) - ) - } -} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/repository/CachingImportRepository.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/repository/CachingImportRepository.kt deleted file mode 100644 index d9f0298e..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/repository/CachingImportRepository.kt +++ /dev/null @@ -1,40 +0,0 @@ -package at.torch.compose.repository - -/** - * As seen in Primal - * - * https://github.com/PrimalHQ/primal-android-app/blob/a7e32e2203555d27e60a749238175cd1ee0fa2af/domain/primal/src/commonMain/kotlin/net/primal/domain/global/CachingImportRepository.kt - * - */ -interface CachingImportRepository { - suspend fun cacheNostrEvents(vararg events: at.torch.compose.database.model.NostrEvent) - suspend fun cacheNostrEvents(events: List) - - suspend fun importEvents(events: List): Boolean - suspend fun broadcastEvents(events: List, relays: List): Result> - - companion object { - val NO_OP_CACHING_IMPORT_REPOSITORY = object : CachingImportRepository { - override suspend fun cacheNostrEvents(vararg events: at.torch.compose.database.model.NostrEvent) { - } - - override suspend fun cacheNostrEvents(events: List) { - - } - - override suspend fun importEvents(events: List): Boolean { - return true - } - - override suspend fun broadcastEvents( - events: List, - relays: List - ): Result> { - return Result.success( - emptyList() - ) - } - - } - } -} diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/repository/PostRepository.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/repository/PostRepository.kt deleted file mode 100644 index a1b88978..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/repository/PostRepository.kt +++ /dev/null @@ -1,3 +0,0 @@ -package at.torch.compose.repository - -interface PostRepository \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/AuthenticatedProfileRoute.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/AuthenticatedProfileRoute.kt deleted file mode 100644 index 71ca9329..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/AuthenticatedProfileRoute.kt +++ /dev/null @@ -1,6 +0,0 @@ -package at.torch.compose.ui.composable.navigation.routes - -import kotlinx.serialization.Serializable - -@Serializable -data object AuthenticatedProfileRoute \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/BlankRoute.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/BlankRoute.kt deleted file mode 100755 index 57bdd0c0..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/BlankRoute.kt +++ /dev/null @@ -1,6 +0,0 @@ -package at.torch.compose.ui.composable.navigation.routes - -import kotlinx.serialization.Serializable - -@Serializable -object BlankRoute: Route() \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/LandingRoute.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/LandingRoute.kt deleted file mode 100755 index c37b8e3a..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/LandingRoute.kt +++ /dev/null @@ -1,6 +0,0 @@ -package at.torch.compose.ui.composable.navigation.routes - -import kotlinx.serialization.Serializable - -@Serializable -object LandingRoute: Route() \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/Route.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/Route.kt deleted file mode 100755 index 1374a360..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/Route.kt +++ /dev/null @@ -1,3 +0,0 @@ -package at.torch.compose.ui.composable.navigation.routes - -abstract class Route \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/SignInRoute.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/SignInRoute.kt deleted file mode 100755 index 4c2d4f5b..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/SignInRoute.kt +++ /dev/null @@ -1,6 +0,0 @@ -package at.torch.compose.ui.composable.navigation.routes - -import kotlinx.serialization.Serializable - -@Serializable -object SignInRoute: Route() \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/SovereignWalletStartupRoute.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/SovereignWalletStartupRoute.kt deleted file mode 100644 index c4a8acb9..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/SovereignWalletStartupRoute.kt +++ /dev/null @@ -1,6 +0,0 @@ -package at.torch.compose.ui.composable.navigation.routes - -import kotlinx.serialization.Serializable - -@Serializable -data object SovereignWalletStartupRoute \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/WriteNewNoteUIState.kt b/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/WriteNewNoteUIState.kt deleted file mode 100644 index f5a1ee39..00000000 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/WriteNewNoteUIState.kt +++ /dev/null @@ -1,24 +0,0 @@ -package at.torch.compose.ui.view.state - -import com.vitorpamplona.quartz.nip01Core.core.HexKey - -abstract class WriteNewNoteUIState { - data object Loading: WriteNewNoteUIState() - - data object Error: WriteNewNoteUIState() - - data class InputPrompt( - val localProfile: at.torch.compose.database.model.intermdiate.LocalProfileWithFollowing, - val inReplyToNostrEvent: at.torch.compose.database.model.intermdiate.LocalNostrEvent? = null, - val quotedNostrEvent: at.torch.compose.database.model.intermdiate.LocalNostrEvent? = null, - val replayToId: HexKey? = null, - ): WriteNewNoteUIState() - - data class ConfirmNote( - val localProfile: at.torch.compose.database.model.intermdiate.LocalProfileWithFollowing, - val inReplyToNostrEvent: at.torch.compose.database.model.intermdiate.LocalNostrEvent? = null, - val quotedNostrEvent: at.torch.compose.database.model.intermdiate.LocalNostrEvent? = null, - val text: String, - ) : WriteNewNoteUIState() - -} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/fr/acinq/phoenix/data/AppConfiguration.kt b/composeApp/src/commonMain/kotlin/fr/acinq/phoenix/data/AppConfiguration.kt index cb00c2c0..1ecd2880 100644 --- a/composeApp/src/commonMain/kotlin/fr/acinq/phoenix/data/AppConfiguration.kt +++ b/composeApp/src/commonMain/kotlin/fr/acinq/phoenix/data/AppConfiguration.kt @@ -6,13 +6,13 @@ import fr.acinq.lightning.utils.ServerAddress import fr.acinq.phoenix.utils.extensions.isOnion import kotlinx.serialization.Serializable import org.jetbrains.compose.resources.getString -import torch.composeapp.generated.resources.Res -import torch.composeapp.generated.resources.currency_ars_bm -import torch.composeapp.generated.resources.currency_ars_official -import torch.composeapp.generated.resources.currency_cup_fm -import torch.composeapp.generated.resources.currency_cup_official -import torch.composeapp.generated.resources.currency_lbp_bm -import torch.composeapp.generated.resources.currency_lbp_official +import mantra.composeapp.generated.resources.Res +import mantra.composeapp.generated.resources.currency_ars_bm +import mantra.composeapp.generated.resources.currency_ars_official +import mantra.composeapp.generated.resources.currency_cup_fm +import mantra.composeapp.generated.resources.currency_cup_official +import mantra.composeapp.generated.resources.currency_lbp_bm +import mantra.composeapp.generated.resources.currency_lbp_official sealed interface CurrencyUnit { diff --git a/composeApp/src/commonMain/kotlin/fr/acinq/phoenix/data/WalletPayment.kt b/composeApp/src/commonMain/kotlin/fr/acinq/phoenix/data/WalletPayment.kt index e4712a3c..1b05221c 100644 --- a/composeApp/src/commonMain/kotlin/fr/acinq/phoenix/data/WalletPayment.kt +++ b/composeApp/src/commonMain/kotlin/fr/acinq/phoenix/data/WalletPayment.kt @@ -18,14 +18,14 @@ import fr.acinq.phoenix.data.lnurl.LnurlPay import fr.acinq.phoenix.utils.converters.AmountFormatter.toPrettyString import fr.acinq.phoenix.utils.extensions.desc import org.jetbrains.compose.resources.stringResource -import torch.composeapp.generated.resources.Res -import torch.composeapp.generated.resources.paymentdetails_desc_closing_channel -import torch.composeapp.generated.resources.paymentdetails_desc_cpfp -import torch.composeapp.generated.resources.paymentdetails_desc_liquidity_automated -import torch.composeapp.generated.resources.paymentdetails_desc_liquidity_manual -import torch.composeapp.generated.resources.paymentdetails_desc_splice_out -import torch.composeapp.generated.resources.paymentdetails_desc_swapin -import torch.composeapp.generated.resources.paymentdetails_desc_swapout +import mantra.composeapp.generated.resources.Res +import mantra.composeapp.generated.resources.paymentdetails_desc_closing_channel +import mantra.composeapp.generated.resources.paymentdetails_desc_cpfp +import mantra.composeapp.generated.resources.paymentdetails_desc_liquidity_automated +import mantra.composeapp.generated.resources.paymentdetails_desc_liquidity_manual +import mantra.composeapp.generated.resources.paymentdetails_desc_splice_out +import mantra.composeapp.generated.resources.paymentdetails_desc_swapin +import mantra.composeapp.generated.resources.paymentdetails_desc_swapout /** * Represents a payment & its associated metadata. diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/AppVersion.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/AppVersion.kt similarity index 80% rename from composeApp/src/commonMain/kotlin/at/torch/compose/AppVersion.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/AppVersion.kt index b5d88092..f75146a1 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/AppVersion.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/AppVersion.kt @@ -1,4 +1,4 @@ -package at.torch.compose +package press.mantra.compose expect object AppVersion { val versionName: String diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/TorchApp.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/MantraApp.kt similarity index 68% rename from composeApp/src/commonMain/kotlin/at/torch/compose/TorchApp.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/MantraApp.kt index a91ea37d..ae98ef76 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/TorchApp.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/MantraApp.kt @@ -1,26 +1,26 @@ -package at.torch.compose +package press.mantra.compose import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material3.Surface import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.navigation.NavHostController -import at.torch.compose.ui.composable.navigation.TorchNavHost -import at.torch.compose.ui.theme.TorchTheme +import press.mantra.compose.ui.composable.navigation.MantraNavHost +import press.mantra.compose.ui.theme.TorchTheme import fr.acinq.phoenix.PhoenixGlobal @Composable -fun TorchApp( +fun MantraApp( navController: NavHostController, - torchGlobal: TorchGlobal, + mantraGlobal: MantraGlobal, phoenixGlobal: PhoenixGlobal ) { TorchTheme { Surface( modifier = Modifier.fillMaxSize() ) { - TorchNavHost( - torchGlobal = torchGlobal, + MantraNavHost( + mantraGlobal = mantraGlobal, phoenixGlobal = phoenixGlobal, navController = navController ) diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/MantraGlobal.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/MantraGlobal.kt new file mode 100644 index 00000000..501762b4 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/MantraGlobal.kt @@ -0,0 +1,5 @@ +package press.mantra.compose + +class MantraGlobal( + val platformContext: PlatformContext +) \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/Platform.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/Platform.kt new file mode 100644 index 00000000..cb5fb393 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/Platform.kt @@ -0,0 +1,7 @@ +package press.mantra.compose + +interface Platform { + val name: String +} + +expect fun getPlatform(): Platform \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/PlatformContext.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/PlatformContext.kt new file mode 100644 index 00000000..b86a26ea --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/PlatformContext.kt @@ -0,0 +1,3 @@ +package press.mantra.compose + +expect class PlatformContext \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/cryptography/Extensions.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/cryptography/Extensions.kt similarity index 78% rename from composeApp/src/commonMain/kotlin/at/torch/compose/cryptography/Extensions.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/cryptography/Extensions.kt index fda4dbfd..78e877ae 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/cryptography/Extensions.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/cryptography/Extensions.kt @@ -1,6 +1,6 @@ -package at.torch.compose.cryptography +package press.mantra.compose.cryptography -import at.torch.compose.database.model.NostrEvent +import press.mantra.compose.database.model.NostrEvent import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.crypto.KeyPair import com.vitorpamplona.quartz.nip01Core.signers.NostrSignerSync @@ -8,12 +8,12 @@ import com.vitorpamplona.quartz.nip19Bech32.bech32.Bech32 import com.vitorpamplona.quartz.nip51Lists.encryption.PrivateTagsInContent import kotlin.time.Instant -fun at.torch.compose.database.model.UnsignedNostrEvent.signOrThrow(nsec: String): NostrEvent { +fun press.mantra.compose.database.model.UnsignedNostrEvent.signOrThrow(nsec: String): NostrEvent { val hexPrivateKey = Bech32.decodeBytes(nsec).second return this.signOrThrow(hexPrivateKey) } -fun at.torch.compose.database.model.UnsignedNostrEvent.signOrThrow(hexPrivateKey: ByteArray): NostrEvent { +fun press.mantra.compose.database.model.UnsignedNostrEvent.signOrThrow(hexPrivateKey: ByteArray): NostrEvent { val tempSigner = NostrSignerSync( KeyPair( privKey = hexPrivateKey diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/TorchDatabase.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/TorchDatabase.kt new file mode 100644 index 00000000..1987e38c --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/TorchDatabase.kt @@ -0,0 +1,209 @@ +package press.mantra.compose.database + +import androidx.room3.Database +import androidx.room3.RoomDatabase +import androidx.room3.TypeConverters +import androidx.room3.immediateTransaction +import androidx.room3.useWriterConnection +import press.mantra.compose.database.converters.TorchConverters +import press.mantra.compose.database.dao.BroadcastNostrEventReceiptDao +import press.mantra.compose.database.dao.BroadcastNostrEventRequestDao +import press.mantra.compose.database.dao.ChatMessageBroadcastNostrEventReceiptRelationDao +import press.mantra.compose.database.dao.ChatMessageBroadcastNostrEventRequestRelationDao +import press.mantra.compose.database.dao.ChatMessageDao +import press.mantra.compose.database.dao.ChatMessageNostrEventRelationDao +import press.mantra.compose.database.dao.ChatRoomDao +import press.mantra.compose.database.dao.ConnectionDao +import press.mantra.compose.database.dao.GiftWrapMessageDao +import press.mantra.compose.database.dao.GiftWrapPayloadDao +import press.mantra.compose.database.dao.GiftWrapSealDao +import press.mantra.compose.database.dao.InReplyToRelationDao +import press.mantra.compose.database.dao.MarmotCommitResultDao +import press.mantra.compose.database.dao.MarmotOutboundDao +import press.mantra.compose.database.dao.MarmotGroupEventDao +import press.mantra.compose.database.dao.MarmotInnerEventDao +import press.mantra.compose.database.dao.MarmotKeyPackageBundleDao +import press.mantra.compose.database.dao.MarmotKeyPackageDao +import press.mantra.compose.database.dao.MarmotRetainedEpochSecretDao +import press.mantra.compose.database.dao.MentionDao +import press.mantra.compose.database.dao.NegentropySynchronizeRequestDao +import press.mantra.compose.database.dao.NegentropySynchronizeResultDao +import press.mantra.compose.database.dao.NostrDao +import press.mantra.compose.database.dao.NostrEventDao +import press.mantra.compose.database.dao.NostrEventRelayDao +import press.mantra.compose.database.dao.NostrNip17Dao +import press.mantra.compose.database.dao.ParticipantDao +import press.mantra.compose.database.dao.PostDao +import press.mantra.compose.database.dao.ProfileDao +import press.mantra.compose.database.dao.QuotedRelationDao +import press.mantra.compose.database.dao.ReactionDao +import press.mantra.compose.database.dao.RecentSearchDao +import press.mantra.compose.database.dao.RelayDao +import press.mantra.compose.database.dao.RepostedRelationDao +import press.mantra.compose.database.dao.SynchronizeNostrEventRequestDao +import press.mantra.compose.database.dao.SynchronizeNostrEventResultDao +import press.mantra.compose.database.dao.UnsignedNostrEventDao +import press.mantra.compose.database.dao.ZapDao +import press.mantra.compose.database.model.BroadcastNostrEventReceipt +import press.mantra.compose.database.model.BroadcastNostrEventRequest +import press.mantra.compose.database.model.ChatMessage +import press.mantra.compose.database.model.ChatMessageBroadcastNostrEventReceiptRelation +import press.mantra.compose.database.model.ChatMessageBroadcastNostrEventRequestRelation +import press.mantra.compose.database.model.ChatMessageNostrEventRelation +import press.mantra.compose.database.model.ChatRoom +import press.mantra.compose.database.model.Connection +import press.mantra.compose.database.model.GiftWrapMessage +import press.mantra.compose.database.model.GiftWrapPayload +import press.mantra.compose.database.model.GiftWrapSeal +import press.mantra.compose.database.model.InReplyToRelation +import press.mantra.compose.database.model.MarmotCommitResult +import press.mantra.compose.database.model.MarmotGroupEvent +import press.mantra.compose.database.model.MarmotInnerEvent +import press.mantra.compose.database.model.MarmotKeyPackage +import press.mantra.compose.database.model.MarmotKeyPackageBundle +import press.mantra.compose.database.model.MarmotRetainedEpochSecret +import press.mantra.compose.database.model.Mention +import press.mantra.compose.database.model.NegentropySynchronizeRequest +import press.mantra.compose.database.model.NegentropySynchronizeResult +import press.mantra.compose.database.model.NostrEvent +import press.mantra.compose.database.model.NostrEventRelay +import press.mantra.compose.database.model.Participant +import press.mantra.compose.database.model.Post +import press.mantra.compose.database.model.Profile +import press.mantra.compose.database.model.QuotedRelation +import press.mantra.compose.database.model.Reaction +import press.mantra.compose.database.model.RecentSearch +import press.mantra.compose.database.model.Relay +import press.mantra.compose.database.model.RepostedRelation +import press.mantra.compose.database.model.SynchronizeNostrEventRequest +import press.mantra.compose.database.model.SynchronizeNostrEventResult +import press.mantra.compose.database.model.UnsignedNostrEvent +import press.mantra.compose.database.model.Zap +import kotlin.time.Instant + +val GENESIS_AT = Instant.fromEpochMilliseconds(1231006505000L) + +@Database( + entities = [ + BroadcastNostrEventReceipt::class, + BroadcastNostrEventRequest::class, + Connection::class, + ChatMessage::class, + ChatMessageBroadcastNostrEventRequestRelation::class, + ChatMessageBroadcastNostrEventReceiptRelation::class, + ChatMessageNostrEventRelation::class, + ChatRoom::class, + GiftWrapMessage::class, + GiftWrapSeal::class, + GiftWrapPayload::class, + InReplyToRelation::class, + MarmotCommitResult::class, + MarmotGroupEvent::class, + MarmotInnerEvent::class, + MarmotKeyPackage::class, + MarmotKeyPackageBundle::class, + MarmotRetainedEpochSecret::class, + Mention::class, + NegentropySynchronizeRequest::class, + NegentropySynchronizeResult::class, + NostrEvent::class, + NostrEventRelay::class, + Participant::class, + Post::class, + Profile::class, + QuotedRelation::class, + Reaction::class, + RecentSearch::class, + Relay::class, + RepostedRelation::class, + SynchronizeNostrEventRequest::class, + SynchronizeNostrEventResult::class, + UnsignedNostrEvent::class, + Zap::class + ], + version = 1 +) +@TypeConverters(TorchConverters::class) +abstract class TorchDatabase: RoomDatabase() { + abstract fun broadcastNostrEventReceiptDao(): BroadcastNostrEventReceiptDao + abstract fun broadcastNostrEventRequestDao(): BroadcastNostrEventRequestDao + + abstract fun chatMessageDao(): ChatMessageDao + + abstract fun chatMessageBroadcastNostrEventRequestRelationDao(): ChatMessageBroadcastNostrEventRequestRelationDao + + abstract fun chatMessageBroadcastNostrEventReceiptRelationDao(): ChatMessageBroadcastNostrEventReceiptRelationDao + + abstract fun chatMessageNostrEventRelationDao(): ChatMessageNostrEventRelationDao + + abstract fun chatRoomDao(): ChatRoomDao + + abstract fun connectionDao(): ConnectionDao + + abstract fun giftWrapMessageDao(): GiftWrapMessageDao + + abstract fun giftWrapSealDao(): GiftWrapSealDao + + abstract fun giftWrapPayloadDao(): GiftWrapPayloadDao + + abstract fun inReplyToRelationDao(): InReplyToRelationDao + + abstract fun marmotCommitResultDao(): MarmotCommitResultDao + + abstract fun marmotGroupEventDao(): MarmotGroupEventDao + + abstract fun marmotInnerEventDao(): MarmotInnerEventDao + + abstract fun marmotKeyPackageBundleDao(): MarmotKeyPackageBundleDao + + abstract fun marmotKeyPackageDao(): MarmotKeyPackageDao + + abstract fun marmotOutboundDao(): MarmotOutboundDao + + abstract fun marmotRetainedEpochSecretDao(): MarmotRetainedEpochSecretDao + + abstract fun mentionDao(): MentionDao + + abstract fun negentropySynchronizeRequestDao(): NegentropySynchronizeRequestDao + + abstract fun negentropySynchronizeResultDao(): NegentropySynchronizeResultDao + + abstract fun nostrDao(): NostrDao + + abstract fun nostrEventDao(): NostrEventDao + + abstract fun nostrEventRelayDao(): NostrEventRelayDao + + abstract fun nostrNip17Dao(): NostrNip17Dao + + abstract fun participantDao(): ParticipantDao + + abstract fun postDao(): PostDao + + abstract fun profileDao(): ProfileDao + + abstract fun quotedRelationDao(): QuotedRelationDao + + abstract fun reactionDao(): ReactionDao + + abstract fun recentSearchDao(): RecentSearchDao + + abstract fun relayDao(): RelayDao + + abstract fun repostedRelationDao(): RepostedRelationDao + + abstract fun synchronizeNostrEventRequestDao(): SynchronizeNostrEventRequestDao + + abstract fun synchronizeNostrEventResultDao(): SynchronizeNostrEventResultDao + + abstract fun unsignedNostrEventDao(): UnsignedNostrEventDao + abstract fun zapDao(): ZapDao + + suspend fun wipeData() { + useWriterConnection { transactor -> + transactor.immediateTransaction { + // TODO: Actually delete the data... + } + } + } +} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/TorchDatabaseConstructor.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/TorchDatabaseConstructor.kt similarity index 85% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/TorchDatabaseConstructor.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/TorchDatabaseConstructor.kt index 5649274f..864b53cf 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/TorchDatabaseConstructor.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/TorchDatabaseConstructor.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database +package press.mantra.compose.database import androidx.room3.RoomDatabaseConstructor diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/builder/PlatformDatabaseBuilder.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/builder/PlatformDatabaseBuilder.kt new file mode 100644 index 00000000..7b7da3b9 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/builder/PlatformDatabaseBuilder.kt @@ -0,0 +1,21 @@ +package press.mantra.compose.database.builder + +import androidx.room3.RoomDatabase +import androidx.sqlite.driver.bundled.BundledSQLiteDriver +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.IO + +expect object PlatformDatabaseBuilder { + fun getDatabaseBuilder(platformContext: press.mantra.compose.PlatformContext): RoomDatabase.Builder + + fun getInMemoryDatabaseBuilder(platform: press.mantra.compose.PlatformContext): RoomDatabase.Builder +} + +fun getRoomDatabase( + builder: RoomDatabase.Builder +): press.mantra.compose.database.TorchDatabase { + return builder + .setDriver(BundledSQLiteDriver()) + .setQueryCoroutineContext(Dispatchers.IO) + .build() +} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/converters/TorchConverters.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/converters/TorchConverters.kt similarity index 96% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/converters/TorchConverters.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/converters/TorchConverters.kt index 0aab99ce..c19bc269 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/converters/TorchConverters.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/converters/TorchConverters.kt @@ -1,7 +1,7 @@ -package at.torch.compose.database.converters +package press.mantra.compose.database.converters import androidx.room3.TypeConverter -import at.torch.compose.database.model.types.SynchronizationFilter +import press.mantra.compose.database.model.types.SynchronizationFilter import co.touchlab.kermit.Logger import kotlinx.serialization.json.Json import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/BroadcastNostrEventReceiptDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/BroadcastNostrEventReceiptDao.kt new file mode 100644 index 00000000..730db07c --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/BroadcastNostrEventReceiptDao.kt @@ -0,0 +1,21 @@ +package press.mantra.compose.database.dao + +import androidx.room3.Dao +import androidx.room3.Query +import androidx.room3.Upsert +import kotlinx.coroutines.flow.Flow + +@Dao +interface BroadcastNostrEventReceiptDao { + @Query("SELECT * FROM BroadcastNostrEventReceipt") + fun getAllBroadcastNostrEventReceipts(): List + + @Query("SELECT * FROM BroadcastNostrEventReceipt WHERE id = :id") + fun getBroadcastNostrEventReceiptById(id: Long): Flow + + @Query("SELECT * FROM BroadcastNostrEventReceipt WHERE nostrEventId = :nostrEventId") + fun getBroadcastNostrEventReceiptByNostrEventId(nostrEventId: String): Flow + + @Upsert + suspend fun upsert(broadcastNostrEventReceipt: press.mantra.compose.database.model.BroadcastNostrEventReceipt): Long +} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/BroadcastNostrEventRequestDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/BroadcastNostrEventRequestDao.kt similarity index 86% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/BroadcastNostrEventRequestDao.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/BroadcastNostrEventRequestDao.kt index 44e5e78a..aa4cfd4f 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/BroadcastNostrEventRequestDao.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/BroadcastNostrEventRequestDao.kt @@ -1,11 +1,11 @@ -package at.torch.compose.database.dao +package press.mantra.compose.database.dao import androidx.room3.Dao import androidx.room3.Insert import androidx.room3.Query import androidx.room3.Upsert -import at.torch.compose.database.model.BroadcastNostrEventRequest -import at.torch.compose.database.model.intermdiate.LocalBroadcastNostrEventRequest +import press.mantra.compose.database.model.BroadcastNostrEventRequest +import press.mantra.compose.database.model.intermdiate.LocalBroadcastNostrEventRequest import kotlinx.coroutines.flow.Flow import kotlin.time.Clock import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ChatMessageBroadcastNostrEventReceiptRelationDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ChatMessageBroadcastNostrEventReceiptRelationDao.kt similarity index 60% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ChatMessageBroadcastNostrEventReceiptRelationDao.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ChatMessageBroadcastNostrEventReceiptRelationDao.kt index dd63f5ba..f56eeefe 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ChatMessageBroadcastNostrEventReceiptRelationDao.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ChatMessageBroadcastNostrEventReceiptRelationDao.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.dao +package press.mantra.compose.database.dao import androidx.room3.Dao import androidx.room3.Upsert @@ -6,5 +6,5 @@ import androidx.room3.Upsert @Dao interface ChatMessageBroadcastNostrEventReceiptRelationDao { @Upsert - suspend fun upsert(chatMessageBroadcastNostrEventReceiptRelation: at.torch.compose.database.model.ChatMessageBroadcastNostrEventReceiptRelation) + suspend fun upsert(chatMessageBroadcastNostrEventReceiptRelation: press.mantra.compose.database.model.ChatMessageBroadcastNostrEventReceiptRelation) } \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ChatMessageBroadcastNostrEventRequestRelationDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ChatMessageBroadcastNostrEventRequestRelationDao.kt similarity index 81% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ChatMessageBroadcastNostrEventRequestRelationDao.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ChatMessageBroadcastNostrEventRequestRelationDao.kt index a7e084a4..8ef68f2b 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ChatMessageBroadcastNostrEventRequestRelationDao.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ChatMessageBroadcastNostrEventRequestRelationDao.kt @@ -1,9 +1,9 @@ -package at.torch.compose.database.dao +package press.mantra.compose.database.dao import androidx.room3.Dao import androidx.room3.Query import androidx.room3.Upsert -import at.torch.compose.database.model.ChatMessageBroadcastNostrEventRequestRelation +import press.mantra.compose.database.model.ChatMessageBroadcastNostrEventRequestRelation @Dao interface ChatMessageBroadcastNostrEventRequestRelationDao { diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ChatMessageDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ChatMessageDao.kt similarity index 77% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ChatMessageDao.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ChatMessageDao.kt index 42b70d90..daa45b01 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ChatMessageDao.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ChatMessageDao.kt @@ -1,10 +1,10 @@ -package at.torch.compose.database.dao +package press.mantra.compose.database.dao import androidx.room3.Dao import androidx.room3.Query import androidx.room3.Transaction import androidx.room3.Upsert -import at.torch.compose.database.model.ChatMessage +import press.mantra.compose.database.model.ChatMessage import com.vitorpamplona.quartz.nip01Core.core.HexKey import kotlinx.coroutines.flow.Flow @@ -12,11 +12,11 @@ import kotlinx.coroutines.flow.Flow interface ChatMessageDao { @Transaction @Query("SELECT * FROM ChatMessage WHERE chatRoomId = :chatRoomId ORDER BY createdAt DESC") - fun observeChatMessagesByChatRoomId(chatRoomId: String): Flow> + fun observeChatMessagesByChatRoomId(chatRoomId: String): Flow> @Transaction @Query("SELECT * FROM ChatMessage WHERE chatRoomId = :chatRoomId ORDER BY createdAt DESC") - fun getChatMessagesByChatRoomId(chatRoomId: String): List + fun getChatMessagesByChatRoomId(chatRoomId: String): List @Query("SELECT * FROM ChatMessage WHERE giftWrapPayloadId = :giftWrapPayloadId ORDER BY createdAt DESC") fun getChatMessagesByGiftWrapPayloadId(giftWrapPayloadId: HexKey): ChatMessage? @@ -31,5 +31,5 @@ interface ChatMessageDao { fun countChatMessagesBySenderPublicKey(chatRoomId: HexKey, senderPublicKey: HexKey): Int @Upsert - suspend fun upsert(chatMessage: at.torch.compose.database.model.ChatMessage): Long + suspend fun upsert(chatMessage: press.mantra.compose.database.model.ChatMessage): Long } \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ChatMessageNostrEventRelationDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ChatMessageNostrEventRelationDao.kt new file mode 100644 index 00000000..1bde13e6 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ChatMessageNostrEventRelationDao.kt @@ -0,0 +1,11 @@ +package press.mantra.compose.database.dao + +import androidx.room3.Dao +import androidx.room3.Upsert + +@Dao +interface ChatMessageNostrEventRelationDao { + + @Upsert + suspend fun upsert(chatMessageNostrEventRelation: press.mantra.compose.database.model.ChatMessageNostrEventRelation) +} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ChatRoomDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ChatRoomDao.kt similarity index 84% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ChatRoomDao.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ChatRoomDao.kt index 31958ce9..cfa6006b 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ChatRoomDao.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ChatRoomDao.kt @@ -1,12 +1,12 @@ -package at.torch.compose.database.dao +package press.mantra.compose.database.dao import androidx.room3.Dao import androidx.room3.Delete import androidx.room3.Query import androidx.room3.Transaction import androidx.room3.Upsert -import at.torch.compose.database.model.ChatRoom -import at.torch.compose.database.model.intermdiate.LocalChatRoom +import press.mantra.compose.database.model.ChatRoom +import press.mantra.compose.database.model.intermdiate.LocalChatRoom import kotlinx.coroutines.flow.Flow @Dao diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ConnectionDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ConnectionDao.kt similarity index 56% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ConnectionDao.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ConnectionDao.kt index 38be97e1..4399eabd 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ConnectionDao.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ConnectionDao.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.dao +package press.mantra.compose.database.dao import androidx.room3.Dao import androidx.room3.Delete @@ -11,19 +11,19 @@ import kotlinx.coroutines.flow.Flow @Dao interface ConnectionDao { @Query("SELECT * FROM Connection LIMIT :limit") - fun getAllConnections(limit: Int = 21): List + fun getAllConnections(limit: Int = 21): List @Query("SELECT * FROM Connection WHERE (sourcePublicKey = :alicePublicKey AND destinationPublicKey = :bobPublicKey) OR (sourcePublicKey = :bobPublicKey AND destinationPublicKey = :alicePublicKey)") - fun observeRelation(alicePublicKey: HexKey, bobPublicKey: HexKey): Flow> + fun observeRelation(alicePublicKey: HexKey, bobPublicKey: HexKey): Flow> @Insert - suspend fun insertPlaceholderProfile(connection: at.torch.compose.database.model.Connection) + suspend fun insertPlaceholderProfile(connection: press.mantra.compose.database.model.Connection) @Upsert - suspend fun upsert(connection: at.torch.compose.database.model.Connection) + suspend fun upsert(connection: press.mantra.compose.database.model.Connection) @Delete - suspend fun delete(connection: at.torch.compose.database.model.Connection) + suspend fun delete(connection: press.mantra.compose.database.model.Connection) } \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/GiftWrapMessageDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/GiftWrapMessageDao.kt new file mode 100644 index 00000000..7b71babd --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/GiftWrapMessageDao.kt @@ -0,0 +1,15 @@ +package press.mantra.compose.database.dao + +import androidx.room3.Dao +import androidx.room3.Query +import androidx.room3.Upsert + +@Dao +interface GiftWrapMessageDao { + @Query("SELECT * FROM GiftWrapMessage") + fun getAllGiftWrapMessages(): List + + @Upsert + suspend fun upsert(giftWrapMessage: press.mantra.compose.database.model.GiftWrapMessage) + +} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/GiftWrapPayloadDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/GiftWrapPayloadDao.kt similarity index 85% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/GiftWrapPayloadDao.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/GiftWrapPayloadDao.kt index 1ff79587..aaf6aacd 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/GiftWrapPayloadDao.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/GiftWrapPayloadDao.kt @@ -1,10 +1,10 @@ -package at.torch.compose.database.dao +package press.mantra.compose.database.dao import androidx.room3.Dao import androidx.room3.Insert import androidx.room3.Query import androidx.room3.Upsert -import at.torch.compose.database.model.GiftWrapPayload +import press.mantra.compose.database.model.GiftWrapPayload import kotlinx.coroutines.flow.Flow @Dao diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/GiftWrapSealDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/GiftWrapSealDao.kt new file mode 100644 index 00000000..e939d480 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/GiftWrapSealDao.kt @@ -0,0 +1,15 @@ +package press.mantra.compose.database.dao + +import androidx.room3.Dao +import androidx.room3.Query +import androidx.room3.Upsert + +@Dao +interface GiftWrapSealDao { + @Query("SELECT * FROM GiftWrapSeal") + fun getAllGiftWrapSeals(): List + + @Upsert + suspend fun upsert(giftWrapSeal: press.mantra.compose.database.model.GiftWrapSeal) + +} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/InReplyToRelationDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/InReplyToRelationDao.kt similarity index 58% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/InReplyToRelationDao.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/InReplyToRelationDao.kt index 4a7829f6..a447a22f 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/InReplyToRelationDao.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/InReplyToRelationDao.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.dao +package press.mantra.compose.database.dao import androidx.room3.Dao import androidx.room3.Insert @@ -8,14 +8,14 @@ import androidx.room3.Upsert @Dao interface InReplyToRelationDao { @Query("SELECT * FROM InReplyToRelation WHERE replyingNostrEventId = :replyingNostrEventId") - fun getRepostByReplyingNostrEventId(replyingNostrEventId: String): at.torch.compose.database.model.InReplyToRelation? + fun getRepostByReplyingNostrEventId(replyingNostrEventId: String): press.mantra.compose.database.model.InReplyToRelation? @Query("SELECT * FROM InReplyToRelation WHERE inReplyToNostrEventId = :inReplyToNostrEventId") - fun getRepostByInReplyToNostrEventId(inReplyToNostrEventId: String): at.torch.compose.database.model.InReplyToRelation? + fun getRepostByInReplyToNostrEventId(inReplyToNostrEventId: String): press.mantra.compose.database.model.InReplyToRelation? @Insert - suspend fun insert(inReplyToRelation: at.torch.compose.database.model.InReplyToRelation) + suspend fun insert(inReplyToRelation: press.mantra.compose.database.model.InReplyToRelation) @Upsert - suspend fun upsert(inReplyToRelation: at.torch.compose.database.model.InReplyToRelation) + suspend fun upsert(inReplyToRelation: press.mantra.compose.database.model.InReplyToRelation) } \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MarmotCommitResultDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MarmotCommitResultDao.kt similarity index 68% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MarmotCommitResultDao.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MarmotCommitResultDao.kt index aa8a0213..a2dab2e0 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MarmotCommitResultDao.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MarmotCommitResultDao.kt @@ -1,12 +1,10 @@ -package at.torch.compose.database.dao +package press.mantra.compose.database.dao import androidx.room3.Dao import androidx.room3.Query import androidx.room3.Upsert -import at.torch.compose.database.model.MarmotCommitResult -import at.torch.compose.database.model.MarmotKeyPackage +import press.mantra.compose.database.model.MarmotCommitResult import com.vitorpamplona.quartz.nip01Core.core.HexKey -import fr.acinq.bitcoin.PublicKey @Dao interface MarmotCommitResultDao { diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MarmotGroupEventDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MarmotGroupEventDao.kt new file mode 100644 index 00000000..4e3c653e --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MarmotGroupEventDao.kt @@ -0,0 +1,12 @@ +package press.mantra.compose.database.dao + +import androidx.room3.Dao +import androidx.room3.Upsert +import press.mantra.compose.database.model.MarmotGroupEvent + +@Dao +interface MarmotGroupEventDao { + + @Upsert + suspend fun upsert(marmotGroupEvent: MarmotGroupEvent) +} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MarmotInnerEventDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MarmotInnerEventDao.kt similarity index 80% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MarmotInnerEventDao.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MarmotInnerEventDao.kt index 4d85558b..8937b2e5 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MarmotInnerEventDao.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MarmotInnerEventDao.kt @@ -1,9 +1,9 @@ -package at.torch.compose.database.dao +package press.mantra.compose.database.dao import androidx.room3.Dao import androidx.room3.Query import androidx.room3.Upsert -import at.torch.compose.database.model.MarmotInnerEvent +import press.mantra.compose.database.model.MarmotInnerEvent import kotlinx.coroutines.flow.Flow @Dao diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MarmotKeyPackageBundleDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MarmotKeyPackageBundleDao.kt similarity index 90% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MarmotKeyPackageBundleDao.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MarmotKeyPackageBundleDao.kt index 313b94d2..a42223d1 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MarmotKeyPackageBundleDao.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MarmotKeyPackageBundleDao.kt @@ -1,9 +1,9 @@ -package at.torch.compose.database.dao +package press.mantra.compose.database.dao import androidx.room3.Dao import androidx.room3.Query import androidx.room3.Upsert -import at.torch.compose.database.model.MarmotKeyPackageBundle +import press.mantra.compose.database.model.MarmotKeyPackageBundle import com.vitorpamplona.quartz.nip01Core.core.HexKey import kotlinx.coroutines.flow.Flow diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MarmotKeyPackageDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MarmotKeyPackageDao.kt similarity index 82% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MarmotKeyPackageDao.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MarmotKeyPackageDao.kt index 4abe5f9b..0a5dc252 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MarmotKeyPackageDao.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MarmotKeyPackageDao.kt @@ -1,11 +1,10 @@ -package at.torch.compose.database.dao +package press.mantra.compose.database.dao import androidx.room3.Dao import androidx.room3.Query import androidx.room3.Upsert -import at.torch.compose.database.model.MarmotKeyPackage +import press.mantra.compose.database.model.MarmotKeyPackage import com.vitorpamplona.quartz.nip01Core.core.HexKey -import fr.acinq.bitcoin.PublicKey @Dao interface MarmotKeyPackageDao { diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MarmotOutboundDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MarmotOutboundDao.kt similarity index 93% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MarmotOutboundDao.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MarmotOutboundDao.kt index 07fba71e..dfb7a2b3 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MarmotOutboundDao.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MarmotOutboundDao.kt @@ -1,27 +1,27 @@ -package at.torch.compose.database.dao +package press.mantra.compose.database.dao import androidx.room3.Dao import androidx.room3.Transaction -import at.torch.compose.database.TorchDatabase -import at.torch.compose.database.model.BroadcastNostrEventRequest -import at.torch.compose.database.model.ChatMessage -import at.torch.compose.database.model.ChatMessageBroadcastNostrEventRequestRelation -import at.torch.compose.database.model.ChatMessageNostrEventRelation -import at.torch.compose.database.model.ChatRoom -import at.torch.compose.database.model.GiftWrapPayload -import at.torch.compose.database.model.MarmotCommitResult -import at.torch.compose.database.model.MarmotGroupEvent -import at.torch.compose.database.model.MarmotInnerEvent -import at.torch.compose.database.model.MarmotInnerEvent.Companion.disappearingExpiration -import at.torch.compose.database.model.MarmotKeyPackage -import at.torch.compose.database.model.MarmotRetainedEpochSecret -import at.torch.compose.database.model.NostrEvent -import at.torch.compose.database.model.Participant -import at.torch.compose.database.model.intermdiate.LocalChatRoom -import at.torch.compose.extensions.exporterSecret -import at.torch.compose.extensions.toHex -import at.torch.compose.managers.MarmotInboundManager.EPOCH_RETENTION_WINDOW -import at.torch.compose.nostr.Relays +import press.mantra.compose.database.TorchDatabase +import press.mantra.compose.database.model.BroadcastNostrEventRequest +import press.mantra.compose.database.model.ChatMessage +import press.mantra.compose.database.model.ChatMessageBroadcastNostrEventRequestRelation +import press.mantra.compose.database.model.ChatMessageNostrEventRelation +import press.mantra.compose.database.model.ChatRoom +import press.mantra.compose.database.model.GiftWrapPayload +import press.mantra.compose.database.model.MarmotCommitResult +import press.mantra.compose.database.model.MarmotGroupEvent +import press.mantra.compose.database.model.MarmotInnerEvent +import press.mantra.compose.database.model.MarmotInnerEvent.Companion.disappearingExpiration +import press.mantra.compose.database.model.MarmotKeyPackage +import press.mantra.compose.database.model.MarmotRetainedEpochSecret +import press.mantra.compose.database.model.NostrEvent +import press.mantra.compose.database.model.Participant +import press.mantra.compose.database.model.intermdiate.LocalChatRoom +import press.mantra.compose.extensions.exporterSecret +import press.mantra.compose.extensions.toHex +import press.mantra.compose.managers.MarmotInboundManager.EPOCH_RETENTION_WINDOW +import press.mantra.compose.nostr.Relays import co.touchlab.kermit.Logger import com.vitorpamplona.quartz.marmot.mip00KeyPackages.tags.EncodingTag import com.vitorpamplona.quartz.marmot.mip01Groups.MarmotGroupData diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MarmotRetainedEpochSecretDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MarmotRetainedEpochSecretDao.kt similarity index 89% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MarmotRetainedEpochSecretDao.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MarmotRetainedEpochSecretDao.kt index 4200131e..4b38af95 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MarmotRetainedEpochSecretDao.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MarmotRetainedEpochSecretDao.kt @@ -1,11 +1,11 @@ -package at.torch.compose.database.dao +package press.mantra.compose.database.dao import androidx.room3.Dao import androidx.room3.Delete import androidx.room3.Insert import androidx.room3.OnConflictStrategy.Companion.IGNORE import androidx.room3.Query -import at.torch.compose.database.model.MarmotRetainedEpochSecret +import press.mantra.compose.database.model.MarmotRetainedEpochSecret import com.vitorpamplona.quartz.nip01Core.core.HexKey @Dao diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MentionDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MentionDao.kt similarity index 54% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MentionDao.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MentionDao.kt index 99f32cd6..7f29d7c9 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/MentionDao.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/MentionDao.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.dao +package press.mantra.compose.database.dao import androidx.room3.Dao import androidx.room3.Insert @@ -11,8 +11,8 @@ interface MentionDao { @Insert( onConflict = IGNORE ) - suspend fun insert(mention: at.torch.compose.database.model.Mention) + suspend fun insert(mention: press.mantra.compose.database.model.Mention) @Upsert - suspend fun upsert(mention: at.torch.compose.database.model.Mention) + suspend fun upsert(mention: press.mantra.compose.database.model.Mention) } \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/NegentropySynchronizeRequestDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/NegentropySynchronizeRequestDao.kt similarity index 90% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/NegentropySynchronizeRequestDao.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/NegentropySynchronizeRequestDao.kt index 9be52792..3859d747 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/NegentropySynchronizeRequestDao.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/NegentropySynchronizeRequestDao.kt @@ -1,11 +1,11 @@ -package at.torch.compose.database.dao +package press.mantra.compose.database.dao import androidx.room3.Dao import androidx.room3.Insert import androidx.room3.OnConflictStrategy.Companion.IGNORE import androidx.room3.Query import androidx.room3.Upsert -import at.torch.compose.database.model.NegentropySynchronizeRequest +import press.mantra.compose.database.model.NegentropySynchronizeRequest import kotlinx.coroutines.flow.Flow import kotlin.time.Clock import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/NegentropySynchronizeResultDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/NegentropySynchronizeResultDao.kt new file mode 100644 index 00000000..bb51e37f --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/NegentropySynchronizeResultDao.kt @@ -0,0 +1,10 @@ +package press.mantra.compose.database.dao + +import androidx.room3.Dao +import androidx.room3.Upsert + +@Dao +interface NegentropySynchronizeResultDao { + @Upsert + fun upsert(negentropySynchronizeResult: press.mantra.compose.database.model.NegentropySynchronizeResult) +} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/NostrDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/NostrDao.kt similarity index 96% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/NostrDao.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/NostrDao.kt index c1e157a3..fd92dc6e 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/NostrDao.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/NostrDao.kt @@ -1,34 +1,33 @@ -package at.torch.compose.database.dao +package press.mantra.compose.database.dao -import androidx.compose.runtime.key import androidx.room3.Dao import androidx.room3.Transaction -import at.torch.compose.database.GENESIS_AT -import at.torch.compose.database.model.BroadcastNostrEventRequest -import at.torch.compose.database.model.ChatMessage -import at.torch.compose.database.model.ChatMessageBroadcastNostrEventRequestRelation -import at.torch.compose.database.model.ChatRoom -import at.torch.compose.database.model.Connection -import at.torch.compose.database.model.MarmotGroupEvent -import at.torch.compose.database.model.MarmotKeyPackage -import at.torch.compose.database.model.Mention -import at.torch.compose.database.model.NegentropySynchronizeRequest -import at.torch.compose.database.model.NostrEvent -import at.torch.compose.database.model.NostrEventRelay -import at.torch.compose.database.model.Participant -import at.torch.compose.database.model.Post -import at.torch.compose.database.model.Profile -import at.torch.compose.database.model.types.SynchronizationFilter -import at.torch.compose.exceptions.GiftWrapImpersonationException -import at.torch.compose.exceptions.GiftWrapSealDecryptionException -import at.torch.compose.exceptions.GiftWrapUnsealException -import at.torch.compose.exceptions.MarmotMissingChatGroupException -import at.torch.compose.exceptions.MarmotMissingKeyPackageBundleException -import at.torch.compose.exceptions.MarmotMissingNostrGroupDataExtension -import at.torch.compose.exceptions.MarmotNotMemberOfChatGroupException -import at.torch.compose.exceptions.MarmotWelcomeEventMissingKeyPackageEventIdException -import at.torch.compose.extensions.toHex -import at.torch.compose.managers.MarmotInboundManager +import press.mantra.compose.database.GENESIS_AT +import press.mantra.compose.database.model.BroadcastNostrEventRequest +import press.mantra.compose.database.model.ChatMessage +import press.mantra.compose.database.model.ChatMessageBroadcastNostrEventRequestRelation +import press.mantra.compose.database.model.ChatRoom +import press.mantra.compose.database.model.Connection +import press.mantra.compose.database.model.MarmotGroupEvent +import press.mantra.compose.database.model.MarmotKeyPackage +import press.mantra.compose.database.model.Mention +import press.mantra.compose.database.model.NegentropySynchronizeRequest +import press.mantra.compose.database.model.NostrEvent +import press.mantra.compose.database.model.NostrEventRelay +import press.mantra.compose.database.model.Participant +import press.mantra.compose.database.model.Post +import press.mantra.compose.database.model.Profile +import press.mantra.compose.database.model.types.SynchronizationFilter +import press.mantra.compose.exceptions.GiftWrapImpersonationException +import press.mantra.compose.exceptions.GiftWrapSealDecryptionException +import press.mantra.compose.exceptions.GiftWrapUnsealException +import press.mantra.compose.exceptions.MarmotMissingChatGroupException +import press.mantra.compose.exceptions.MarmotMissingKeyPackageBundleException +import press.mantra.compose.exceptions.MarmotMissingNostrGroupDataExtension +import press.mantra.compose.exceptions.MarmotNotMemberOfChatGroupException +import press.mantra.compose.exceptions.MarmotWelcomeEventMissingKeyPackageEventIdException +import press.mantra.compose.extensions.toHex +import press.mantra.compose.managers.MarmotInboundManager import co.touchlab.kermit.Logger import com.vitorpamplona.quartz.marmot.GroupEventResult import com.vitorpamplona.quartz.marmot.mip00KeyPackages.KeyPackageEvent @@ -44,7 +43,6 @@ import com.vitorpamplona.quartz.nip01Core.core.toHexKey import com.vitorpamplona.quartz.nip01Core.crypto.KeyPair import com.vitorpamplona.quartz.nip01Core.metadata.MetadataEvent import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl -import com.vitorpamplona.quartz.nip01Core.relay.normalizer.normalizedUrls import com.vitorpamplona.quartz.nip01Core.tags.events.taggedEvents import com.vitorpamplona.quartz.nip01Core.tags.people.taggedUsers import com.vitorpamplona.quartz.nip02FollowList.ContactListEvent @@ -53,13 +51,12 @@ import com.vitorpamplona.quartz.nip17Dm.settings.ChatMessageRelayListEvent import com.vitorpamplona.quartz.nip40Expiration.expiration import com.vitorpamplona.quartz.nip59Giftwrap.wraps.GiftWrapEvent import kotlin.io.encoding.Base64 -import kotlin.math.log import kotlin.time.Clock import kotlin.time.Instant @Dao abstract class NostrDao( - private val database: at.torch.compose.database.TorchDatabase, + private val database: press.mantra.compose.database.TorchDatabase, ) { val logger = Logger.withTag("NostrDao") @@ -78,7 +75,7 @@ abstract class NostrDao( @Transaction open suspend fun publishNostrEvent( - unsignedNostrEvent: at.torch.compose.database.model.UnsignedNostrEvent, + unsignedNostrEvent: press.mantra.compose.database.model.UnsignedNostrEvent, nostrEvent: NostrEvent, relayURLs: List, activeKeyPair: KeyPair @@ -1186,7 +1183,7 @@ abstract class NostrDao( /** * Persist the rescheduling using a transaction so that we are assured of the existence of the - * [ChatMessageBroadcastNostrEventRequestRelation] when we produce the [at.torch.compose.database.model.BroadcastNostrEventReceipt] + * [ChatMessageBroadcastNostrEventRequestRelation] when we produce the [press.mantra.compose.database.model.BroadcastNostrEventReceipt] */ @Transaction open suspend fun rescheduleBroadcastNostrEventRequests(broadcastNostrEventRequests: List) { diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/NostrEventDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/NostrEventDao.kt similarity index 85% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/NostrEventDao.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/NostrEventDao.kt index 46e80726..321b8209 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/NostrEventDao.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/NostrEventDao.kt @@ -1,6 +1,5 @@ -package at.torch.compose.database.dao +package press.mantra.compose.database.dao -import androidx.compose.runtime.IntState import androidx.room3.Dao import androidx.room3.Insert import androidx.room3.OnConflictStrategy.Companion.IGNORE @@ -9,8 +8,8 @@ import androidx.room3.RawQuery import androidx.room3.RoomRawQuery import androidx.room3.Transaction import androidx.room3.Upsert -import at.torch.compose.database.model.MarmotGroupEvent -import at.torch.compose.database.model.NostrEvent +import press.mantra.compose.database.model.MarmotGroupEvent +import press.mantra.compose.database.model.NostrEvent import com.vitorpamplona.quartz.marmot.mip03GroupMessages.GroupEvent import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.core.Kind @@ -22,35 +21,35 @@ import kotlin.time.Instant interface NostrEventDao { @Transaction @Query("SELECT * FROM NostrEvent WHERE kind in (:kinds) ORDER BY createdAt DESC") - fun observeNostrEvents(kinds: Array): Flow> + fun observeNostrEvents(kinds: Array): Flow> @Transaction @Query("SELECT * FROM NostrEvent WHERE content LIKE '%' || :search || '%' AND kind in (:kinds) ORDER BY createdAt DESC") fun observeFilteredNostrEvents( kinds: Array, search: String - ): Flow> + ): Flow> @Transaction @Query("SELECT * FROM NostrEvent WHERE kind in (:kinds) AND id in (:ids) ORDER BY createdAt DESC") fun observeFilteredNostrEvents( kinds: Array, ids: Array, - ): Flow> + ): Flow> @Transaction @Query("SELECT * FROM NostrEvent WHERE kind in (:kinds) AND pubKey in (:authors) ORDER BY createdAt DESC LIMIT 50") fun observeAuthoredNostrEvents( kinds: Array, authors: Array, - ): Flow> + ): Flow> @Transaction @Query("SELECT * FROM NostrEvent WHERE tags LIKE '%' || :publicKey || '%' AND kind in (:kinds) ORDER BY createdAt DESC") fun observePublicKeyMentionedNostrEvents( kinds: Array, publicKey: HexKey - ): Flow> + ): Flow> @Transaction @Query("SELECT * FROM NostrEvent WHERE tags LIKE '%' || :eventId || '%reply%' AND kind in (:kinds) AND createdAt > :since ORDER BY createdAt DESC") @@ -58,13 +57,13 @@ interface NostrEventDao { kinds: Array, eventId: HexKey, since: Instant - ): Flow> + ): Flow> @Transaction @RawQuery fun observePublicKeyFollowingNostrEvents( query: RoomRawQuery - ): Flow> + ): Flow> @Transaction @Query("SELECT * FROM NostrEvent WHERE kind in (:kinds) AND createdAt > :since ORDER BY createdAt ASC LIMIT :limit") @@ -149,7 +148,7 @@ interface NostrEventDao { @Transaction @Query("SELECT * FROM NostrEvent WHERE id = :id") - fun observeNostrEventById(id: String): Flow + fun observeNostrEventById(id: String): Flow @Query("SELECT * FROM NostrEvent WHERE id = :id") fun getNostrEventById(id: String): NostrEvent? diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/NostrEventRelayDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/NostrEventRelayDao.kt new file mode 100644 index 00000000..2078e514 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/NostrEventRelayDao.kt @@ -0,0 +1,12 @@ +package press.mantra.compose.database.dao + +import androidx.room3.Dao +import androidx.room3.Upsert + +@Dao +interface NostrEventRelayDao { + + @Upsert + suspend fun upsert(nostrEventRelay: press.mantra.compose.database.model.NostrEventRelay) + +} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/NostrNip17Dao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/NostrNip17Dao.kt similarity index 90% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/NostrNip17Dao.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/NostrNip17Dao.kt index 9ae09d34..776741b5 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/NostrNip17Dao.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/NostrNip17Dao.kt @@ -1,19 +1,19 @@ -package at.torch.compose.database.dao +package press.mantra.compose.database.dao import androidx.room3.Dao import androidx.room3.Transaction -import at.torch.compose.database.GENESIS_AT -import at.torch.compose.database.model.BroadcastNostrEventRequest -import at.torch.compose.database.model.ChatMessageBroadcastNostrEventRequestRelation -import at.torch.compose.database.model.ChatMessageNostrEventRelation -import at.torch.compose.database.model.ChatRoom -import at.torch.compose.database.model.GiftWrapMessage -import at.torch.compose.database.model.GiftWrapPayload -import at.torch.compose.database.model.GiftWrapSeal -import at.torch.compose.database.model.NostrEvent -import at.torch.compose.database.model.Participant -import at.torch.compose.database.model.intermdiate.LocalChatRoom -import at.torch.compose.nostr.Relays +import press.mantra.compose.database.GENESIS_AT +import press.mantra.compose.database.model.BroadcastNostrEventRequest +import press.mantra.compose.database.model.ChatMessageBroadcastNostrEventRequestRelation +import press.mantra.compose.database.model.ChatMessageNostrEventRelation +import press.mantra.compose.database.model.ChatRoom +import press.mantra.compose.database.model.GiftWrapMessage +import press.mantra.compose.database.model.GiftWrapPayload +import press.mantra.compose.database.model.GiftWrapSeal +import press.mantra.compose.database.model.NostrEvent +import press.mantra.compose.database.model.Participant +import press.mantra.compose.database.model.intermdiate.LocalChatRoom +import press.mantra.compose.nostr.Relays import co.touchlab.kermit.Logger import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.tags.people.PTag @@ -25,7 +25,7 @@ import kotlin.time.Instant @Dao abstract class NostrNip17Dao( - private val database: at.torch.compose.database.TorchDatabase + private val database: press.mantra.compose.database.TorchDatabase ) { val logger = Logger.withTag(TAG) diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ParticipantDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ParticipantDao.kt similarity index 86% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ParticipantDao.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ParticipantDao.kt index 9b063487..fc681765 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ParticipantDao.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ParticipantDao.kt @@ -1,10 +1,10 @@ -package at.torch.compose.database.dao +package press.mantra.compose.database.dao import androidx.room3.Dao import androidx.room3.Delete import androidx.room3.Query import androidx.room3.Upsert -import at.torch.compose.database.model.Participant +import press.mantra.compose.database.model.Participant @Dao interface ParticipantDao { diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/PostDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/PostDao.kt new file mode 100644 index 00000000..77ef09e6 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/PostDao.kt @@ -0,0 +1,21 @@ +package press.mantra.compose.database.dao + +import androidx.room3.Dao +import androidx.room3.Insert +import androidx.room3.Query +import androidx.room3.Upsert + +@Dao +interface PostDao { + @Query("SELECT * FROM Post") + fun getAllPosts(): List + + @Query("SELECT * FROM Post WHERE id = :id") + fun getPostById(id: String): press.mantra.compose.database.model.Post? + + @Insert + suspend fun insert(post: press.mantra.compose.database.model.Post) + + @Upsert + suspend fun upsert(post: press.mantra.compose.database.model.Post) +} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ProfileDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ProfileDao.kt similarity index 82% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ProfileDao.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ProfileDao.kt index 04f7ec0a..91ba8e5c 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ProfileDao.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ProfileDao.kt @@ -1,11 +1,11 @@ -package at.torch.compose.database.dao +package press.mantra.compose.database.dao import androidx.room3.Dao import androidx.room3.Insert import androidx.room3.Query import androidx.room3.Upsert -import at.torch.compose.database.GENESIS_AT -import at.torch.compose.database.model.Profile +import press.mantra.compose.database.GENESIS_AT +import press.mantra.compose.database.model.Profile import com.vitorpamplona.quartz.nip01Core.core.HexKey import kotlinx.coroutines.flow.Flow import kotlin.time.Instant @@ -23,7 +23,7 @@ interface ProfileDao { @Query("SELECT * FROM NostrEvent WHERE kind = 0 AND content LIKE '%' || :searchTerm || '%' LIMIT :limit") - fun filterProfiles(searchTerm: String, limit: Int = 21): List + fun filterProfiles(searchTerm: String, limit: Int = 21): List @Query("SELECT * FROM Profile WHERE publicKey = :publicKey") fun getProfileByPublicKey(publicKey: String): Profile? @@ -35,10 +35,10 @@ interface ProfileDao { fun getProfileByPublicKeys(publicKeys: List): List @Query("SELECT * FROM NostrEvent WHERE kind = 0 AND pubKey = :publicKey") - fun observeProfileWithFollowersByPublicKey(publicKey: String): Flow + fun observeProfileWithFollowersByPublicKey(publicKey: String): Flow @Query("SELECT * FROM NostrEvent WHERE kind = 0 AND pubKey = :publicKey") - fun observeProfileWithFollowingByPublicKey(publicKey: String): Flow + fun observeProfileWithFollowingByPublicKey(publicKey: String): Flow @Insert suspend fun insertPlaceholderProfile(profile: Profile) diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/QuotedRelationDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/QuotedRelationDao.kt similarity index 59% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/QuotedRelationDao.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/QuotedRelationDao.kt index 635c0e64..0913b55f 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/QuotedRelationDao.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/QuotedRelationDao.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.dao +package press.mantra.compose.database.dao import androidx.room3.Dao import androidx.room3.Insert @@ -8,14 +8,14 @@ import androidx.room3.Upsert @Dao interface QuotedRelationDao { @Query("SELECT * FROM QuotedRelation WHERE quotingNostrEventId = :quotingNostrEventId") - fun getRepostByQuotingNostrEventId(quotingNostrEventId: String): at.torch.compose.database.model.QuotedRelation? + fun getRepostByQuotingNostrEventId(quotingNostrEventId: String): press.mantra.compose.database.model.QuotedRelation? @Query("SELECT * FROM QuotedRelation WHERE quotedNostrEventId = :quotedNostrEventId") - fun getRepostByQuotedNostrEventId(quotedNostrEventId: String): at.torch.compose.database.model.QuotedRelation? + fun getRepostByQuotedNostrEventId(quotedNostrEventId: String): press.mantra.compose.database.model.QuotedRelation? @Insert - suspend fun insert(quotedRelation: at.torch.compose.database.model.QuotedRelation) + suspend fun insert(quotedRelation: press.mantra.compose.database.model.QuotedRelation) @Upsert - suspend fun upsert(quotedRelation: at.torch.compose.database.model.QuotedRelation) + suspend fun upsert(quotedRelation: press.mantra.compose.database.model.QuotedRelation) } \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ReactionDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ReactionDao.kt new file mode 100644 index 00000000..7f6c26c9 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ReactionDao.kt @@ -0,0 +1,18 @@ +package press.mantra.compose.database.dao + +import androidx.room3.Dao +import androidx.room3.Query +import androidx.room3.Upsert +import kotlinx.coroutines.flow.Flow + +@Dao +interface ReactionDao { + @Query("SELECT * FROM Reaction") + fun getAllReactions(): List + + @Query("SELECT * FROM Reaction WHERE id = :id") + fun getReactionById(id: String): Flow + + @Upsert + suspend fun upsert(reaction: press.mantra.compose.database.model.Reaction) +} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/RecentSearchDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/RecentSearchDao.kt new file mode 100644 index 00000000..dc87b1aa --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/RecentSearchDao.kt @@ -0,0 +1,22 @@ +package press.mantra.compose.database.dao + +import androidx.room3.Dao +import androidx.room3.Delete +import androidx.room3.Query +import androidx.room3.Upsert +import kotlinx.coroutines.flow.Flow + +@Dao +interface RecentSearchDao { + @Query("SELECT * FROM RecentSearch WHERE `query` = :query") + fun observeRecentSearchByQuery(query: String): Flow + + @Query("SELECT * FROM RecentSearch ORDER BY createdAt DESC LIMIT :limit ") + fun getAllRecentSearches(limit: Int = 21): List + + @Delete + fun deleteRecentSearch(recentSearch: press.mantra.compose.database.model.RecentSearch) + + @Upsert + suspend fun upsert(recentSearch: press.mantra.compose.database.model.RecentSearch) +} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/RelayDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/RelayDao.kt new file mode 100644 index 00000000..629616e9 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/RelayDao.kt @@ -0,0 +1,19 @@ +package press.mantra.compose.database.dao + +import androidx.room3.Dao +import androidx.room3.Query +import androidx.room3.Upsert +import kotlinx.coroutines.flow.Flow + +@Dao +interface RelayDao { + @Query("SELECT * FROM Relay") + fun getAllPosts(): List + + @Query("SELECT * FROM Relay WHERE publicKey = :publicKey") + fun observePublicKeyRelays(publicKey: String): Flow> + + @Upsert + suspend fun upsert(relay: press.mantra.compose.database.model.Relay) + +} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/RepostedRelationDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/RepostedRelationDao.kt new file mode 100644 index 00000000..7a47218f --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/RepostedRelationDao.kt @@ -0,0 +1,20 @@ +package press.mantra.compose.database.dao + +import androidx.room3.Dao +import androidx.room3.Query +import androidx.room3.Upsert + +@Dao +interface RepostedRelationDao { + @Query("SELECT * FROM RepostedRelation") + fun getAllReposts(): List + + @Query("SELECT * FROM RepostedRelation WHERE repostingNostrEventId = :repostingNostrEventId") + fun getRepostByRepostingId(repostingNostrEventId: String): press.mantra.compose.database.model.RepostedRelation? + + @Query("SELECT * FROM RepostedRelation WHERE repostedNostrEventId = :repostedNostrEventId") + fun getRepostByRepostedId(repostedNostrEventId: String): press.mantra.compose.database.model.RepostedRelation? + + @Upsert + suspend fun upsert(repostedRelation: press.mantra.compose.database.model.RepostedRelation) +} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/SynchronizeNostrEventRequestDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/SynchronizeNostrEventRequestDao.kt similarity index 65% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/SynchronizeNostrEventRequestDao.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/SynchronizeNostrEventRequestDao.kt index 80781a14..197c33f0 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/SynchronizeNostrEventRequestDao.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/SynchronizeNostrEventRequestDao.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.dao +package press.mantra.compose.database.dao import androidx.room3.Dao import androidx.room3.Insert @@ -11,14 +11,14 @@ import kotlin.time.Instant @Dao interface SynchronizeNostrEventRequestDao { @Query("SELECT * FROM SynchronizeNostrEventRequest WHERE status = :status AND createdAt > :createdAt") - fun observeSynchronizeNostrEventRequestsByStatus(status: String, createdAt: Instant = Clock.System.now()): Flow + fun observeSynchronizeNostrEventRequestsByStatus(status: String, createdAt: Instant = Clock.System.now()): Flow @Query("SELECT COUNT(*) FROM SynchronizeNostrEventRequest WHERE purpose = :purpose AND status IN (:status) AND createdAt > :createdAt") fun observeSynchronizeNostrEventRequestByPurposeAndStatusCount(purpose: String, status: List, createdAt: Instant = Clock.System.now()): Flow @Upsert - fun upsert(synchronizeNostrEventRequest: at.torch.compose.database.model.SynchronizeNostrEventRequest) + fun upsert(synchronizeNostrEventRequest: press.mantra.compose.database.model.SynchronizeNostrEventRequest) @Insert - fun insert(synchronizeNostrEventRequests: List) + fun insert(synchronizeNostrEventRequests: List) } \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/SynchronizeNostrEventResultDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/SynchronizeNostrEventResultDao.kt new file mode 100644 index 00000000..9e5fa4f1 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/SynchronizeNostrEventResultDao.kt @@ -0,0 +1,10 @@ +package press.mantra.compose.database.dao + +import androidx.room3.Dao +import androidx.room3.Upsert + +@Dao +interface SynchronizeNostrEventResultDao { + @Upsert + fun upsert(synchronizeNostrEventResult: press.mantra.compose.database.model.SynchronizeNostrEventResult) +} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/UnsignedNostrEventDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/UnsignedNostrEventDao.kt similarity index 52% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/UnsignedNostrEventDao.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/UnsignedNostrEventDao.kt index c5076445..4a84964d 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/UnsignedNostrEventDao.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/UnsignedNostrEventDao.kt @@ -1,29 +1,29 @@ -package at.torch.compose.database.dao +package press.mantra.compose.database.dao import androidx.room3.Dao import androidx.room3.Insert import androidx.room3.Query import androidx.room3.Transaction import androidx.room3.Upsert -import at.torch.compose.database.model.intermdiate.LocalAccount +import press.mantra.compose.database.model.intermdiate.LocalAccount import kotlinx.coroutines.flow.Flow @Dao interface UnsignedNostrEventDao { @Query("SELECT * FROM UnsignedNostrEvent") - fun getAUnsignedNostrEvents(): List + fun getAUnsignedNostrEvents(): List @Query("SELECT * FROM UnsignedNostrEvent") // TODO: where nostrEvent.unsignedNostrEventId is 0 - fun getAllUnprocessedUnsignedNostrEvents(): List + fun getAllUnprocessedUnsignedNostrEvents(): List @Query("SELECT * FROM UnsignedNostrEvent WHERE id = :id") - fun getUnsignedNostrEventById(id: Long): Flow + fun getUnsignedNostrEventById(id: Long): Flow @Upsert - suspend fun upsert(unsignedNostrEvent: at.torch.compose.database.model.UnsignedNostrEvent): Long + suspend fun upsert(unsignedNostrEvent: press.mantra.compose.database.model.UnsignedNostrEvent): Long @Insert - suspend fun insert(unsignedNostrEvents: List) + suspend fun insert(unsignedNostrEvents: List) @Transaction @Query("SELECT * FROM UnsignedNostrEvent WHERE kind = 0 AND pubKey = :publicKey") @@ -34,5 +34,5 @@ interface UnsignedNostrEventDao { fun getLocalAccounts(): List @Query("SELECT * FROM UnsignedNostrEvent WHERE pubKey = :publicKey AND signedAt IS NULL") - fun observeUnsignedNostrEvents(publicKey: String): Flow + fun observeUnsignedNostrEvents(publicKey: String): Flow } \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ZapDao.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ZapDao.kt similarity index 75% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ZapDao.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ZapDao.kt index 68152241..b207876f 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/dao/ZapDao.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/dao/ZapDao.kt @@ -1,9 +1,9 @@ -package at.torch.compose.database.dao +package press.mantra.compose.database.dao import androidx.room3.Dao import androidx.room3.Query import androidx.room3.Upsert -import at.torch.compose.database.model.Zap +import press.mantra.compose.database.model.Zap import kotlinx.coroutines.flow.Flow @Dao diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/BroadcastNostrEventReceipt.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/BroadcastNostrEventReceipt.kt similarity index 85% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/BroadcastNostrEventReceipt.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/BroadcastNostrEventReceipt.kt index 311072e8..cf76320e 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/BroadcastNostrEventReceipt.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/BroadcastNostrEventReceipt.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.ForeignKey @@ -35,5 +35,5 @@ data class BroadcastNostrEventReceipt( val isSync: Boolean = false, val relayURL: String, val messages: String? = null -): at.torch.compose.database.model.traits.NostrEventEntity, - at.torch.compose.database.model.traits.UnsignedNostrEventEntity \ No newline at end of file +): press.mantra.compose.database.model.traits.NostrEventEntity, + press.mantra.compose.database.model.traits.UnsignedNostrEventEntity \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/BroadcastNostrEventRequest.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/BroadcastNostrEventRequest.kt similarity index 82% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/BroadcastNostrEventRequest.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/BroadcastNostrEventRequest.kt index e0854779..d239bca2 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/BroadcastNostrEventRequest.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/BroadcastNostrEventRequest.kt @@ -1,12 +1,12 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.ForeignKey import androidx.room3.Index import androidx.room3.PrimaryKey -import at.torch.compose.database.model.traits.NostrEventEntity -import at.torch.compose.database.model.traits.TimestampedEntity -import at.torch.compose.database.model.traits.UnsignedNostrEventEntity +import press.mantra.compose.database.model.traits.NostrEventEntity +import press.mantra.compose.database.model.traits.TimestampedEntity +import press.mantra.compose.database.model.traits.UnsignedNostrEventEntity import com.vitorpamplona.quartz.nip01Core.core.HexKey import kotlin.time.Clock import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/ChatMessage.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/ChatMessage.kt similarity index 94% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/ChatMessage.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/ChatMessage.kt index 45d18aba..f1de8ca8 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/ChatMessage.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/ChatMessage.kt @@ -1,17 +1,15 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.ForeignKey import androidx.room3.PrimaryKey -import at.torch.compose.database.TorchDatabase -import at.torch.compose.database.model.traits.LocalStoreEntity -import at.torch.compose.database.model.traits.SoftDeletableEntity -import at.torch.compose.database.model.traits.TimestampedEntity -import at.torch.compose.database.model.traits.UserViewableEntity -import at.torch.compose.exceptions.GiftWrapImpersonationException -import at.torch.compose.exceptions.MarmotUnprocessableInnerEventException -import at.torch.compose.exceptions.MarmotUnsupportedWireFormatException -import at.torch.compose.extensions.toHex +import press.mantra.compose.database.TorchDatabase +import press.mantra.compose.database.model.traits.LocalStoreEntity +import press.mantra.compose.database.model.traits.SoftDeletableEntity +import press.mantra.compose.database.model.traits.TimestampedEntity +import press.mantra.compose.database.model.traits.UserViewableEntity +import press.mantra.compose.exceptions.MarmotUnprocessableInnerEventException +import press.mantra.compose.extensions.toHex import com.vitorpamplona.quartz.marmot.GroupEventResult import com.vitorpamplona.quartz.marmot.mip03GroupMessages.GroupEvent import com.vitorpamplona.quartz.nip01Core.core.Event diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/ChatMessageBroadcastNostrEventReceiptRelation.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/ChatMessageBroadcastNostrEventReceiptRelation.kt similarity index 84% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/ChatMessageBroadcastNostrEventReceiptRelation.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/ChatMessageBroadcastNostrEventReceiptRelation.kt index 3b31a2cb..247cbefb 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/ChatMessageBroadcastNostrEventReceiptRelation.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/ChatMessageBroadcastNostrEventReceiptRelation.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.ForeignKey @@ -32,5 +32,5 @@ data class ChatMessageBroadcastNostrEventReceiptRelation( override val createdAt: Instant = Clock.System.now(), override val updatedAt: Instant = Clock.System.now(), override val savedAt: Instant = Clock.System.now() -): at.torch.compose.database.model.traits.TimestampedEntity, - at.torch.compose.database.model.traits.LocalStoreEntity +): press.mantra.compose.database.model.traits.TimestampedEntity, + press.mantra.compose.database.model.traits.LocalStoreEntity diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/ChatMessageBroadcastNostrEventRequestRelation.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/ChatMessageBroadcastNostrEventRequestRelation.kt similarity index 85% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/ChatMessageBroadcastNostrEventRequestRelation.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/ChatMessageBroadcastNostrEventRequestRelation.kt index e3783c3b..2aee4911 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/ChatMessageBroadcastNostrEventRequestRelation.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/ChatMessageBroadcastNostrEventRequestRelation.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.ForeignKey @@ -33,5 +33,5 @@ data class ChatMessageBroadcastNostrEventRequestRelation( override val createdAt: Instant = Clock.System.now(), override val updatedAt: Instant = Clock.System.now(), override val savedAt: Instant = Clock.System.now() -): at.torch.compose.database.model.traits.TimestampedEntity, - at.torch.compose.database.model.traits.LocalStoreEntity +): press.mantra.compose.database.model.traits.TimestampedEntity, + press.mantra.compose.database.model.traits.LocalStoreEntity diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/ChatMessageNostrEventRelation.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/ChatMessageNostrEventRelation.kt similarity index 84% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/ChatMessageNostrEventRelation.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/ChatMessageNostrEventRelation.kt index 96fa4745..62fba5d3 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/ChatMessageNostrEventRelation.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/ChatMessageNostrEventRelation.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.ForeignKey @@ -33,5 +33,5 @@ data class ChatMessageNostrEventRelation( override val createdAt: Instant = Clock.System.now(), override val updatedAt: Instant = Clock.System.now(), override val savedAt: Instant = Clock.System.now(), -): at.torch.compose.database.model.traits.TimestampedEntity, - at.torch.compose.database.model.traits.LocalStoreEntity +): press.mantra.compose.database.model.traits.TimestampedEntity, + press.mantra.compose.database.model.traits.LocalStoreEntity diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/ChatRoom.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/ChatRoom.kt similarity index 93% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/ChatRoom.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/ChatRoom.kt index 7fb7d8a1..bc4f4717 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/ChatRoom.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/ChatRoom.kt @@ -1,13 +1,13 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.ForeignKey import androidx.room3.Ignore import androidx.room3.PrimaryKey -import at.torch.compose.database.model.traits.LocalStoreEntity -import at.torch.compose.database.model.traits.SoftDeletableEntity -import at.torch.compose.database.model.traits.TimestampedEntity -import at.torch.compose.database.model.traits.UserViewableEntity +import press.mantra.compose.database.model.traits.LocalStoreEntity +import press.mantra.compose.database.model.traits.SoftDeletableEntity +import press.mantra.compose.database.model.traits.TimestampedEntity +import press.mantra.compose.database.model.traits.UserViewableEntity import co.touchlab.kermit.Logger import com.vitorpamplona.quartz.marmot.mls.group.MlsGroup import com.vitorpamplona.quartz.marmot.mls.group.MlsGroupState diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/Connection.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/Connection.kt similarity index 75% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/Connection.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/Connection.kt index f48dbace..b48493ae 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/Connection.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/Connection.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.ForeignKey @@ -34,8 +34,8 @@ data class Connection( override val savedAt: Instant = Clock.System.now(), override val deletedAt: Instant? = null, override val broadcastedAt: Instant? = null, -): at.torch.compose.database.model.traits.NostrEventEntity, - at.torch.compose.database.model.traits.TimestampedEntity, - at.torch.compose.database.model.traits.LocalStoreEntity, - at.torch.compose.database.model.traits.BroadcastableEntity, - at.torch.compose.database.model.traits.SoftDeletableEntity +): press.mantra.compose.database.model.traits.NostrEventEntity, + press.mantra.compose.database.model.traits.TimestampedEntity, + press.mantra.compose.database.model.traits.LocalStoreEntity, + press.mantra.compose.database.model.traits.BroadcastableEntity, + press.mantra.compose.database.model.traits.SoftDeletableEntity diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/GiftWrapMessage.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/GiftWrapMessage.kt similarity index 92% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/GiftWrapMessage.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/GiftWrapMessage.kt index e5bfba0b..c0b471ea 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/GiftWrapMessage.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/GiftWrapMessage.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.ForeignKey @@ -74,11 +74,11 @@ data class GiftWrapMessage( override val savedAt: Instant = Clock.System.now(), override val viewedAt: Instant? = null, override val deletedAt: Instant? = null, // Who this message should be seen by (used to derive conversationId) -): at.torch.compose.database.model.traits.NostrEventEntity, - at.torch.compose.database.model.traits.TimestampedEntity, - at.torch.compose.database.model.traits.LocalStoreEntity, - at.torch.compose.database.model.traits.UserViewableEntity, - at.torch.compose.database.model.traits.SoftDeletableEntity { +): press.mantra.compose.database.model.traits.NostrEventEntity, + press.mantra.compose.database.model.traits.TimestampedEntity, + press.mantra.compose.database.model.traits.LocalStoreEntity, + press.mantra.compose.database.model.traits.UserViewableEntity, + press.mantra.compose.database.model.traits.SoftDeletableEntity { @Ignore private val logger = Logger.withTag("GiftWrapMessage") diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/GiftWrapPayload.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/GiftWrapPayload.kt similarity index 93% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/GiftWrapPayload.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/GiftWrapPayload.kt index 446a06a7..839e1cab 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/GiftWrapPayload.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/GiftWrapPayload.kt @@ -1,13 +1,13 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.ForeignKey import androidx.room3.Ignore import androidx.room3.PrimaryKey -import at.torch.compose.database.model.traits.LocalStoreEntity -import at.torch.compose.database.model.traits.SoftDeletableEntity -import at.torch.compose.database.model.traits.TimestampedEntity -import at.torch.compose.database.model.traits.UserViewableEntity +import press.mantra.compose.database.model.traits.LocalStoreEntity +import press.mantra.compose.database.model.traits.SoftDeletableEntity +import press.mantra.compose.database.model.traits.TimestampedEntity +import press.mantra.compose.database.model.traits.UserViewableEntity import co.touchlab.kermit.Logger import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.core.Kind diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/GiftWrapSeal.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/GiftWrapSeal.kt similarity index 93% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/GiftWrapSeal.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/GiftWrapSeal.kt index c6e9469a..a9fbf507 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/GiftWrapSeal.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/GiftWrapSeal.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.ForeignKey @@ -62,10 +62,10 @@ data class GiftWrapSeal( override val savedAt: Instant = Clock.System.now(), override val viewedAt: Instant? = null, override val deletedAt: Instant? = null, // Who this message should be seen by (used to derive conversationId) -): at.torch.compose.database.model.traits.TimestampedEntity, - at.torch.compose.database.model.traits.LocalStoreEntity, - at.torch.compose.database.model.traits.UserViewableEntity, - at.torch.compose.database.model.traits.SoftDeletableEntity { +): press.mantra.compose.database.model.traits.TimestampedEntity, + press.mantra.compose.database.model.traits.LocalStoreEntity, + press.mantra.compose.database.model.traits.UserViewableEntity, + press.mantra.compose.database.model.traits.SoftDeletableEntity { @Ignore private val logger = Logger.withTag("GiftWrapMessage") diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/InReplyToRelation.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/InReplyToRelation.kt similarity index 86% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/InReplyToRelation.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/InReplyToRelation.kt index 747a3d25..eb8a1387 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/InReplyToRelation.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/InReplyToRelation.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.ForeignKey @@ -56,7 +56,7 @@ data class InReplyToRelation( override val savedAt: Instant = Clock.System.now(), override val viewedAt: Instant? = null, override val deletedAt: Instant? = null, -): at.torch.compose.database.model.traits.TimestampedEntity, - at.torch.compose.database.model.traits.LocalStoreEntity, - at.torch.compose.database.model.traits.UserViewableEntity, - at.torch.compose.database.model.traits.SoftDeletableEntity \ No newline at end of file +): press.mantra.compose.database.model.traits.TimestampedEntity, + press.mantra.compose.database.model.traits.LocalStoreEntity, + press.mantra.compose.database.model.traits.UserViewableEntity, + press.mantra.compose.database.model.traits.SoftDeletableEntity \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/MarmotCommitResult.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MarmotCommitResult.kt similarity index 76% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/MarmotCommitResult.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MarmotCommitResult.kt index 962a8c51..160a7a5c 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/MarmotCommitResult.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MarmotCommitResult.kt @@ -1,32 +1,14 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity -import androidx.room3.ForeignKey import androidx.room3.Ignore import androidx.room3.PrimaryKey -import at.torch.compose.database.model.traits.LocalStoreEntity -import at.torch.compose.database.model.traits.SoftDeletableEntity -import at.torch.compose.database.model.traits.TimestampedEntity -import at.torch.compose.database.model.traits.UserViewableEntity +import press.mantra.compose.database.model.traits.LocalStoreEntity +import press.mantra.compose.database.model.traits.SoftDeletableEntity +import press.mantra.compose.database.model.traits.TimestampedEntity +import press.mantra.compose.database.model.traits.UserViewableEntity import co.touchlab.kermit.Logger -import com.vitorpamplona.quartz.marmot.mip01Groups.MarmotGroupData -import com.vitorpamplona.quartz.marmot.mip03GroupMessages.GroupEvent -import com.vitorpamplona.quartz.marmot.mip03GroupMessages.GroupEventEncryption -import com.vitorpamplona.quartz.marmot.mls.group.MlsGroup -import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.core.HexKey -import com.vitorpamplona.quartz.nip01Core.core.Kind -import com.vitorpamplona.quartz.nip01Core.crypto.KeyPair -import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl -import com.vitorpamplona.quartz.nip01Core.signers.NostrSignerInternal -import com.vitorpamplona.quartz.nip01Core.signers.eventTemplate -import com.vitorpamplona.quartz.nip01Core.tags.people.PTag -import com.vitorpamplona.quartz.nip01Core.tags.people.taggedUsers -import com.vitorpamplona.quartz.nip14Subject.subject -import com.vitorpamplona.quartz.nip40Expiration.expiration -import com.vitorpamplona.quartz.nip59Giftwrap.rumors.RumorAssembler -import com.vitorpamplona.quartz.nipC7Chats.ChatEvent -import com.vitorpamplona.quartz.utils.TimeUtils import kotlin.time.Clock import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/MarmotGroupEvent.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MarmotGroupEvent.kt similarity index 61% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/MarmotGroupEvent.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MarmotGroupEvent.kt index 99ce1024..a7cc9683 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/MarmotGroupEvent.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MarmotGroupEvent.kt @@ -1,22 +1,14 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.ForeignKey import androidx.room3.PrimaryKey -import at.torch.compose.database.model.traits.BroadcastableEntity -import at.torch.compose.database.model.traits.LocalStoreEntity -import at.torch.compose.database.model.traits.NostrEventEntity -import at.torch.compose.database.model.traits.SoftDeletableEntity -import at.torch.compose.database.model.traits.TimestampedEntity -import at.torch.compose.exceptions.MarmotMissingRetainedExporterSecretsException -import at.torch.compose.extensions.exporterSecret +import press.mantra.compose.database.model.traits.BroadcastableEntity +import press.mantra.compose.database.model.traits.LocalStoreEntity +import press.mantra.compose.database.model.traits.SoftDeletableEntity +import press.mantra.compose.database.model.traits.TimestampedEntity import com.vitorpamplona.quartz.marmot.mip03GroupMessages.GroupEvent -import com.vitorpamplona.quartz.marmot.mip03GroupMessages.GroupEventEncryption -import com.vitorpamplona.quartz.marmot.mls.group.MlsGroup import com.vitorpamplona.quartz.nip01Core.core.HexKey -import com.vitorpamplona.quartz.nip40Expiration.expiration -import com.vitorpamplona.quartz.utils.Hex -import com.vitorpamplona.quartz.utils.Log import kotlin.time.Clock import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/MarmotInnerEvent.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MarmotInnerEvent.kt similarity index 80% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/MarmotInnerEvent.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MarmotInnerEvent.kt index 26c43858..75f3c387 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/MarmotInnerEvent.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MarmotInnerEvent.kt @@ -1,33 +1,19 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.ForeignKey import androidx.room3.Ignore import androidx.room3.PrimaryKey -import at.torch.compose.database.model.traits.LocalStoreEntity -import at.torch.compose.database.model.traits.SoftDeletableEntity -import at.torch.compose.database.model.traits.TimestampedEntity -import at.torch.compose.database.model.traits.UserViewableEntity -import at.torch.compose.extensions.exporterSecret +import press.mantra.compose.database.model.traits.LocalStoreEntity +import press.mantra.compose.database.model.traits.SoftDeletableEntity +import press.mantra.compose.database.model.traits.TimestampedEntity +import press.mantra.compose.database.model.traits.UserViewableEntity import co.touchlab.kermit.Logger import com.vitorpamplona.quartz.marmot.mip01Groups.MarmotGroupData -import com.vitorpamplona.quartz.marmot.mip03GroupMessages.GroupEvent -import com.vitorpamplona.quartz.marmot.mip03GroupMessages.GroupEventEncryption import com.vitorpamplona.quartz.marmot.mls.group.MlsGroup -import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.core.Kind -import com.vitorpamplona.quartz.nip01Core.crypto.KeyPair -import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl -import com.vitorpamplona.quartz.nip01Core.signers.NostrSignerInternal -import com.vitorpamplona.quartz.nip01Core.signers.eventTemplate -import com.vitorpamplona.quartz.nip01Core.tags.people.PTag -import com.vitorpamplona.quartz.nip01Core.tags.people.taggedUsers -import com.vitorpamplona.quartz.nip14Subject.subject -import com.vitorpamplona.quartz.nip40Expiration.expiration -import com.vitorpamplona.quartz.nip59Giftwrap.rumors.RumorAssembler import com.vitorpamplona.quartz.nipC7Chats.ChatEvent -import com.vitorpamplona.quartz.utils.TimeUtils import kotlin.time.Clock import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/MarmotKeyPackage.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MarmotKeyPackage.kt similarity index 86% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/MarmotKeyPackage.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MarmotKeyPackage.kt index 5849bb03..0eb27964 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/MarmotKeyPackage.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MarmotKeyPackage.kt @@ -1,12 +1,12 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.ForeignKey import androidx.room3.PrimaryKey -import at.torch.compose.database.model.traits.BroadcastableEntity -import at.torch.compose.database.model.traits.LocalStoreEntity -import at.torch.compose.database.model.traits.SoftDeletableEntity -import at.torch.compose.database.model.traits.TimestampedEntity +import press.mantra.compose.database.model.traits.BroadcastableEntity +import press.mantra.compose.database.model.traits.LocalStoreEntity +import press.mantra.compose.database.model.traits.SoftDeletableEntity +import press.mantra.compose.database.model.traits.TimestampedEntity import com.vitorpamplona.quartz.nip01Core.core.HexKey import kotlin.time.Clock import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/MarmotKeyPackageBundle.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MarmotKeyPackageBundle.kt similarity index 90% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/MarmotKeyPackageBundle.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MarmotKeyPackageBundle.kt index a1fbafba..7098617d 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/MarmotKeyPackageBundle.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MarmotKeyPackageBundle.kt @@ -1,13 +1,12 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity -import androidx.room3.ForeignKey import androidx.room3.Index import androidx.room3.PrimaryKey -import at.torch.compose.database.model.traits.BroadcastableEntity -import at.torch.compose.database.model.traits.LocalStoreEntity -import at.torch.compose.database.model.traits.SoftDeletableEntity -import at.torch.compose.database.model.traits.TimestampedEntity +import press.mantra.compose.database.model.traits.BroadcastableEntity +import press.mantra.compose.database.model.traits.LocalStoreEntity +import press.mantra.compose.database.model.traits.SoftDeletableEntity +import press.mantra.compose.database.model.traits.TimestampedEntity import com.vitorpamplona.quartz.nip01Core.core.HexKey import kotlin.time.Clock import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/MarmotRetainedEpochSecret.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MarmotRetainedEpochSecret.kt similarity index 75% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/MarmotRetainedEpochSecret.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MarmotRetainedEpochSecret.kt index 8870bc72..49018de0 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/MarmotRetainedEpochSecret.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/MarmotRetainedEpochSecret.kt @@ -1,11 +1,9 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.ForeignKey -import at.torch.compose.database.model.traits.LocalStoreEntity -import at.torch.compose.database.model.traits.SoftDeletableEntity -import at.torch.compose.database.model.traits.TimestampedEntity -import at.torch.compose.database.model.traits.UserViewableEntity +import press.mantra.compose.database.model.traits.LocalStoreEntity +import press.mantra.compose.database.model.traits.TimestampedEntity import kotlin.time.Clock import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/Mention.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/Mention.kt similarity index 79% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/Mention.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/Mention.kt index f09cc621..19aaba32 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/Mention.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/Mention.kt @@ -1,12 +1,12 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.ForeignKey import androidx.room3.PrimaryKey -import at.torch.compose.database.model.traits.BroadcastableEntity -import at.torch.compose.database.model.traits.LocalStoreEntity -import at.torch.compose.database.model.traits.SoftDeletableEntity -import at.torch.compose.database.model.traits.TimestampedEntity +import press.mantra.compose.database.model.traits.BroadcastableEntity +import press.mantra.compose.database.model.traits.LocalStoreEntity +import press.mantra.compose.database.model.traits.SoftDeletableEntity +import press.mantra.compose.database.model.traits.TimestampedEntity import com.vitorpamplona.quartz.nip01Core.core.HexKey import kotlin.time.Clock import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/NegentropySynchronizeRequest.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/NegentropySynchronizeRequest.kt similarity index 84% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/NegentropySynchronizeRequest.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/NegentropySynchronizeRequest.kt index 287dfcab..bf31361c 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/NegentropySynchronizeRequest.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/NegentropySynchronizeRequest.kt @@ -1,10 +1,10 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.ForeignKey import androidx.room3.Index import androidx.room3.PrimaryKey -import at.torch.compose.network.serialization.encodeToJsonString +import press.mantra.compose.network.serialization.encodeToJsonString import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.utils.sha256.sha256 import io.ktor.utils.io.core.toByteArray @@ -40,13 +40,13 @@ data class NegentropySynchronizeRequest( val level: Int, - val synchronizationFilter: at.torch.compose.database.model.types.SynchronizationFilter, + val synchronizationFilter: press.mantra.compose.database.model.types.SynchronizationFilter, override val nostrEventId: HexKey? = null, override val createdAt: Instant = Clock.System.now(), override val updatedAt: Instant = createdAt, -): at.torch.compose.database.model.traits.OptionalNostrEventEntity, - at.torch.compose.database.model.traits.TimestampedEntity { +): press.mantra.compose.database.model.traits.OptionalNostrEventEntity, + press.mantra.compose.database.model.traits.TimestampedEntity { fun toSynchronizeNostrEventRequest(): SynchronizeNostrEventRequest { val since = synchronizationFilter.since // TODO: Update since -> until based on what we have in the local db... @@ -69,7 +69,7 @@ data class NegentropySynchronizeRequest( companion object { fun computeId( relayURL: String, - synchronizationFilter: at.torch.compose.database.model.types.SynchronizationFilter, + synchronizationFilter: press.mantra.compose.database.model.types.SynchronizationFilter, ): String { return sha256( data = relayURL.toByteArray() diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/NegentropySynchronizeResult.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/NegentropySynchronizeResult.kt similarity index 88% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/NegentropySynchronizeResult.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/NegentropySynchronizeResult.kt index fc511a2d..71aad5ca 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/NegentropySynchronizeResult.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/NegentropySynchronizeResult.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.ForeignKey @@ -29,4 +29,4 @@ data class NegentropySynchronizeResult( override val createdAt: Instant = Clock.System.now(), override val updatedAt: Instant = createdAt, -): at.torch.compose.database.model.traits.TimestampedEntity \ No newline at end of file +): press.mantra.compose.database.model.traits.TimestampedEntity \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/NostrEvent.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/NostrEvent.kt similarity index 96% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/NostrEvent.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/NostrEvent.kt index 16eef63f..c6c824fd 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/NostrEvent.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/NostrEvent.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.Ignore @@ -20,7 +20,6 @@ import com.vitorpamplona.quartz.nip18Reposts.quotes.QAddressableTag import com.vitorpamplona.quartz.nip18Reposts.quotes.QEventTag import com.vitorpamplona.quartz.nip18Reposts.quotes.firstTaggedQuote import com.vitorpamplona.quartz.nip25Reactions.ReactionEvent -import com.vitorpamplona.quartz.nip40Expiration.expiration import com.vitorpamplona.quartz.nip57Zaps.LnZapEvent import com.vitorpamplona.quartz.nip59Giftwrap.wraps.GiftWrapEvent import com.vitorpamplona.quartz.utils.EventFactory @@ -75,11 +74,11 @@ data class NostrEvent( override val savedAt: Instant = Clock.System.now(), override val deletedAt: Instant? = null, override val broadcastedAt: Instant? = null, -): at.torch.compose.database.model.traits.UnsignedNostrEventEntity, - at.torch.compose.database.model.traits.TimestampedEntity, - at.torch.compose.database.model.traits.LocalStoreEntity, - at.torch.compose.database.model.traits.BroadcastableEntity, - at.torch.compose.database.model.traits.SoftDeletableEntity { +): press.mantra.compose.database.model.traits.UnsignedNostrEventEntity, + press.mantra.compose.database.model.traits.TimestampedEntity, + press.mantra.compose.database.model.traits.LocalStoreEntity, + press.mantra.compose.database.model.traits.BroadcastableEntity, + press.mantra.compose.database.model.traits.SoftDeletableEntity { @Ignore private val logger = Logger.withTag("NostrEvent") @@ -384,8 +383,8 @@ data class NostrEvent( } } - val quotedNotes = at.torch.compose.ui.composable.widgets.content.ContentParser.parse(content.trimEnd('\n', '\r'), emptyMap(), emptyMap(), trimBlankLines = true) - .filterIsInstance() + val quotedNotes = press.mantra.compose.ui.composable.widgets.content.ContentParser.parse(content.trimEnd('\n', '\r'), emptyMap(), emptyMap(), trimBlankLines = true) + .filterIsInstance() .firstOrNull() return quotedNotes?.let { quotedNote -> diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/NostrEventRelay.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/NostrEventRelay.kt similarity index 78% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/NostrEventRelay.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/NostrEventRelay.kt index 58b09959..da5f5f95 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/NostrEventRelay.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/NostrEventRelay.kt @@ -1,10 +1,10 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.ForeignKey import androidx.room3.Index -import at.torch.compose.database.model.traits.NostrEventEntity -import at.torch.compose.database.model.traits.TimestampedEntity +import press.mantra.compose.database.model.traits.NostrEventEntity +import press.mantra.compose.database.model.traits.TimestampedEntity import com.vitorpamplona.quartz.nip01Core.core.HexKey import kotlin.time.Clock import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/Participant.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/Participant.kt similarity index 88% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/Participant.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/Participant.kt index 68fddc5c..c5990147 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/Participant.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/Participant.kt @@ -1,12 +1,12 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.ForeignKey import androidx.room3.PrimaryKey -import at.torch.compose.database.model.traits.BroadcastableEntity -import at.torch.compose.database.model.traits.LocalStoreEntity -import at.torch.compose.database.model.traits.SoftDeletableEntity -import at.torch.compose.database.model.traits.TimestampedEntity +import press.mantra.compose.database.model.traits.BroadcastableEntity +import press.mantra.compose.database.model.traits.LocalStoreEntity +import press.mantra.compose.database.model.traits.SoftDeletableEntity +import press.mantra.compose.database.model.traits.TimestampedEntity import com.vitorpamplona.quartz.marmot.mls.group.MlsGroup import com.vitorpamplona.quartz.marmot.mls.tree.Credential import com.vitorpamplona.quartz.nip01Core.core.HexKey diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/Post.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/Post.kt similarity index 77% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/Post.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/Post.kt index d58fc8fa..867f2688 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/Post.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/Post.kt @@ -1,17 +1,17 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.ForeignKey import androidx.room3.Index import androidx.room3.PrimaryKey -import at.torch.compose.database.model.traits.BroadcastableEntity -import at.torch.compose.database.model.traits.LocalStoreEntity -import at.torch.compose.database.model.traits.NostrEventEntity -import at.torch.compose.database.model.traits.ProfilePublicKeyEntity -import at.torch.compose.database.model.traits.ReplyingToEntity -import at.torch.compose.database.model.traits.SoftDeletableEntity -import at.torch.compose.database.model.traits.TimestampedEntity -import at.torch.compose.database.model.traits.UserViewableEntity +import press.mantra.compose.database.model.traits.BroadcastableEntity +import press.mantra.compose.database.model.traits.LocalStoreEntity +import press.mantra.compose.database.model.traits.NostrEventEntity +import press.mantra.compose.database.model.traits.ProfilePublicKeyEntity +import press.mantra.compose.database.model.traits.ReplyingToEntity +import press.mantra.compose.database.model.traits.SoftDeletableEntity +import press.mantra.compose.database.model.traits.TimestampedEntity +import press.mantra.compose.database.model.traits.UserViewableEntity import com.vitorpamplona.quartz.nip01Core.core.HexKey import kotlin.time.Clock import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/Profile.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/Profile.kt similarity index 85% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/Profile.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/Profile.kt index 13fc9f2f..fdff1542 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/Profile.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/Profile.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -20,6 +20,7 @@ import androidx.room3.Index import androidx.room3.PrimaryKey import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl import com.vitorpamplona.quartz.nip51Lists.relayLists.RelayFeedsListEvent +import press.mantra.compose.ui.theme.TorchTheme import kotlin.time.Clock import kotlin.time.Instant @@ -62,12 +63,12 @@ data class Profile( override val viewedAt: Instant? = null, override val deletedAt: Instant? = null, override val broadcastedAt: Instant? = null, -): at.torch.compose.database.model.traits.NostrEventEntity, - at.torch.compose.database.model.traits.TimestampedEntity, - at.torch.compose.database.model.traits.LocalStoreEntity, - at.torch.compose.database.model.traits.UserViewableEntity, - at.torch.compose.database.model.traits.BroadcastableEntity, - at.torch.compose.database.model.traits.SoftDeletableEntity { +): press.mantra.compose.database.model.traits.NostrEventEntity, + press.mantra.compose.database.model.traits.TimestampedEntity, + press.mantra.compose.database.model.traits.LocalStoreEntity, + press.mantra.compose.database.model.traits.UserViewableEntity, + press.mantra.compose.database.model.traits.BroadcastableEntity, + press.mantra.compose.database.model.traits.SoftDeletableEntity { fun humanReadableNameOrPubkey(): String { return if (!displayName.isNullOrBlank()) { displayName @@ -95,7 +96,7 @@ data class Profile( } suspend fun profilePublicRelays( - nostrRepository: at.torch.compose.repository.NostrRepository + nostrRepository: press.mantra.compose.repository.NostrRepository ): List? { val relays = nostrRepository.getNostrEvent( publicKey, @@ -123,7 +124,7 @@ data class Profile( @Composable fun RenderAsListItem( activeUserPublicKey: String, - onNavigateToEvent: (at.torch.compose.ui.composable.navigation.routes.Route) -> Unit + onNavigateToEvent: (press.mantra.compose.ui.composable.navigation.routes.Route) -> Unit ) { Card( modifier = Modifier.fillMaxWidth().padding( @@ -132,7 +133,7 @@ data class Profile( ), onClick = { onNavigateToEvent.invoke( - _root_ide_package_.at.torch.compose.ui.composable.navigation.routes.NostrEventDetailRoute( + press.mantra.compose.ui.composable.navigation.routes.NostrEventDetailRoute( activeUserPublicKey = activeUserPublicKey, nostrEventId ) @@ -150,7 +151,7 @@ data class Profile( Column( modifier = Modifier.padding(4.dp) ) { - _root_ide_package_.at.torch.compose.ui.composable.widgets.profile.ProfileAvatar( + press.mantra.compose.ui.composable.widgets.profile.ProfileAvatar( publicKey = publicKey, profile = this@Profile ) @@ -172,7 +173,7 @@ data class Profile( Text( text = staticIdentifier, style = MaterialTheme.typography.labelMedium, - color = at.torch.compose.ui.composable.widgets.profile.ProfileColor.fromPublicKey(publicKey) + color = press.mantra.compose.ui.composable.widgets.profile.ProfileColor.fromPublicKey(publicKey) ) } @@ -194,7 +195,7 @@ fun ProfileRenderAsListItemPreview( about = "I am the stone that the builder refused.", nostrEventId = "nostrEventId" ) - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + TorchTheme { Surface( modifier = Modifier.padding(20.dp) ) { diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/QuotedRelation.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/QuotedRelation.kt similarity index 79% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/QuotedRelation.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/QuotedRelation.kt index b738826c..5fc0496b 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/QuotedRelation.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/QuotedRelation.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.ForeignKey @@ -45,8 +45,8 @@ data class QuotedRelation( override val viewedAt: Instant? = null, override val deletedAt: Instant? = null, override val broadcastedAt: Instant? = null, -): at.torch.compose.database.model.traits.TimestampedEntity, - at.torch.compose.database.model.traits.LocalStoreEntity, - at.torch.compose.database.model.traits.UserViewableEntity, - at.torch.compose.database.model.traits.BroadcastableEntity, - at.torch.compose.database.model.traits.SoftDeletableEntity \ No newline at end of file +): press.mantra.compose.database.model.traits.TimestampedEntity, + press.mantra.compose.database.model.traits.LocalStoreEntity, + press.mantra.compose.database.model.traits.UserViewableEntity, + press.mantra.compose.database.model.traits.BroadcastableEntity, + press.mantra.compose.database.model.traits.SoftDeletableEntity \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/Reaction.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/Reaction.kt similarity index 73% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/Reaction.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/Reaction.kt index c02bc11b..daeecc0a 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/Reaction.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/Reaction.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.ForeignKey @@ -52,11 +52,11 @@ data class Reaction( override val viewedAt: Instant? = null, override val deletedAt: Instant? = null, override val broadcastedAt: Instant? = null, -): at.torch.compose.database.model.traits.NostrEventEntity, - at.torch.compose.database.model.traits.ReplyingToEntity, - at.torch.compose.database.model.traits.ProfilePublicKeyEntity, - at.torch.compose.database.model.traits.TimestampedEntity, - at.torch.compose.database.model.traits.LocalStoreEntity, - at.torch.compose.database.model.traits.UserViewableEntity, - at.torch.compose.database.model.traits.BroadcastableEntity, - at.torch.compose.database.model.traits.SoftDeletableEntity +): press.mantra.compose.database.model.traits.NostrEventEntity, + press.mantra.compose.database.model.traits.ReplyingToEntity, + press.mantra.compose.database.model.traits.ProfilePublicKeyEntity, + press.mantra.compose.database.model.traits.TimestampedEntity, + press.mantra.compose.database.model.traits.LocalStoreEntity, + press.mantra.compose.database.model.traits.UserViewableEntity, + press.mantra.compose.database.model.traits.BroadcastableEntity, + press.mantra.compose.database.model.traits.SoftDeletableEntity diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/RecentSearch.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/RecentSearch.kt similarity index 82% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/RecentSearch.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/RecentSearch.kt index bb2742bb..123eeb21 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/RecentSearch.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/RecentSearch.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.PrimaryKey @@ -10,11 +10,11 @@ data class RecentSearch( @PrimaryKey val query: String, - val synchronizationFilters: Array? = null, + val synchronizationFilters: Array? = null, override val createdAt: Instant = Clock.System.now(), override val updatedAt: Instant = createdAt, -): at.torch.compose.database.model.traits.TimestampedEntity { +): press.mantra.compose.database.model.traits.TimestampedEntity { override fun equals(other: Any?): Boolean { if (this === other) return true if (other == null || this::class != other::class) return false diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/Relay.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/Relay.kt similarity index 83% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/Relay.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/Relay.kt index 965a8f67..5cf195ba 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/Relay.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/Relay.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/RepostedRelation.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/RepostedRelation.kt similarity index 79% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/RepostedRelation.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/RepostedRelation.kt index f54b1209..a9f506ee 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/RepostedRelation.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/RepostedRelation.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.ForeignKey @@ -44,8 +44,8 @@ data class RepostedRelation( override val viewedAt: Instant? = null, override val deletedAt: Instant? = null, override val broadcastedAt: Instant? = null, -): at.torch.compose.database.model.traits.TimestampedEntity, - at.torch.compose.database.model.traits.LocalStoreEntity, - at.torch.compose.database.model.traits.UserViewableEntity, - at.torch.compose.database.model.traits.BroadcastableEntity, - at.torch.compose.database.model.traits.SoftDeletableEntity \ No newline at end of file +): press.mantra.compose.database.model.traits.TimestampedEntity, + press.mantra.compose.database.model.traits.LocalStoreEntity, + press.mantra.compose.database.model.traits.UserViewableEntity, + press.mantra.compose.database.model.traits.BroadcastableEntity, + press.mantra.compose.database.model.traits.SoftDeletableEntity \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/SynchronizeNostrEventRequest.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/SynchronizeNostrEventRequest.kt similarity index 87% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/SynchronizeNostrEventRequest.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/SynchronizeNostrEventRequest.kt index 5eb4e872..822a6e2b 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/SynchronizeNostrEventRequest.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/SynchronizeNostrEventRequest.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.ForeignKey @@ -41,15 +41,15 @@ data class SynchronizeNostrEventRequest( val level: Int, - val synchronizationFilters: Array, + val synchronizationFilters: Array, override val nostrEventId: HexKey? = null, override val unsignedNostrEventId: Long? = null, override val createdAt: Instant = Clock.System.now(), override val updatedAt: Instant = createdAt, -): at.torch.compose.database.model.traits.OptionalNostrEventEntity, - at.torch.compose.database.model.traits.UnsignedNostrEventEntity, - at.torch.compose.database.model.traits.TimestampedEntity { +): press.mantra.compose.database.model.traits.OptionalNostrEventEntity, + press.mantra.compose.database.model.traits.UnsignedNostrEventEntity, + press.mantra.compose.database.model.traits.TimestampedEntity { override fun equals(other: Any?): Boolean { if (this === other) return true if (other == null || this::class != other::class) return false diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/SynchronizeNostrEventResult.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/SynchronizeNostrEventResult.kt similarity index 79% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/SynchronizeNostrEventResult.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/SynchronizeNostrEventResult.kt index f0f7fbbb..f6f9a48e 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/SynchronizeNostrEventResult.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/SynchronizeNostrEventResult.kt @@ -1,11 +1,11 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.ForeignKey import androidx.room3.Index import androidx.room3.PrimaryKey -import at.torch.compose.database.model.traits.OptionalNostrEventEntity -import at.torch.compose.database.model.traits.TimestampedEntity +import press.mantra.compose.database.model.traits.OptionalNostrEventEntity +import press.mantra.compose.database.model.traits.TimestampedEntity import com.vitorpamplona.quartz.nip01Core.core.HexKey import kotlin.time.Clock import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/UnsignedNostrEvent.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/UnsignedNostrEvent.kt similarity index 87% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/UnsignedNostrEvent.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/UnsignedNostrEvent.kt index 72b98e5a..99d3026b 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/UnsignedNostrEvent.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/UnsignedNostrEvent.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.Index @@ -31,10 +31,10 @@ data class UnsignedNostrEvent( override val savedAt: Instant = Clock.System.now(), override val deletedAt: Instant? = null, override val broadcastedAt: Instant? = null, -): at.torch.compose.database.model.traits.TimestampedEntity, - at.torch.compose.database.model.traits.LocalStoreEntity, - at.torch.compose.database.model.traits.BroadcastableEntity, - at.torch.compose.database.model.traits.SoftDeletableEntity { +): press.mantra.compose.database.model.traits.TimestampedEntity, + press.mantra.compose.database.model.traits.LocalStoreEntity, + press.mantra.compose.database.model.traits.BroadcastableEntity, + press.mantra.compose.database.model.traits.SoftDeletableEntity { override fun equals(other: Any?): Boolean { if (this === other) return true diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/Zap.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/Zap.kt similarity index 81% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/Zap.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/Zap.kt index 5a86232b..8be34474 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/Zap.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/Zap.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model +package press.mantra.compose.database.model import androidx.room3.Entity import androidx.room3.ForeignKey @@ -61,9 +61,9 @@ data class Zap( override val viewedAt: Instant? = null, override val deletedAt: Instant? = null, override val broadcastedAt: Instant? = null, -) : at.torch.compose.database.model.traits.NostrEventEntity, - at.torch.compose.database.model.traits.TimestampedEntity, - at.torch.compose.database.model.traits.LocalStoreEntity, - at.torch.compose.database.model.traits.UserViewableEntity, - at.torch.compose.database.model.traits.BroadcastableEntity, - at.torch.compose.database.model.traits.SoftDeletableEntity +) : press.mantra.compose.database.model.traits.NostrEventEntity, + press.mantra.compose.database.model.traits.TimestampedEntity, + press.mantra.compose.database.model.traits.LocalStoreEntity, + press.mantra.compose.database.model.traits.UserViewableEntity, + press.mantra.compose.database.model.traits.BroadcastableEntity, + press.mantra.compose.database.model.traits.SoftDeletableEntity diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalAccount.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalAccount.kt similarity index 50% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalAccount.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalAccount.kt index 915f9cad..c7dc9731 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalAccount.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalAccount.kt @@ -1,39 +1,39 @@ -package at.torch.compose.database.model.intermdiate +package press.mantra.compose.database.model.intermdiate import androidx.room3.Embedded import androidx.room3.Relation data class LocalAccount( - @Embedded val unsignedNostrEvent: at.torch.compose.database.model.UnsignedNostrEvent?, + @Embedded val unsignedNostrEvent: press.mantra.compose.database.model.UnsignedNostrEvent?, @Relation( parentColumns = ["id"], entityColumns = ["unsignedNostrEventId"] ) - val nostrEvent: at.torch.compose.database.model.NostrEvent?, + val nostrEvent: press.mantra.compose.database.model.NostrEvent?, @Relation( parentColumns = ["pubKey"], entityColumns = ["publicKey"] ) - val profile: at.torch.compose.database.model.Profile?, + val profile: press.mantra.compose.database.model.Profile?, @Relation( parentColumns = ["id"], entityColumns = ["unsignedNostrEventId"] ) - val broadcastNostrEventRequest: at.torch.compose.database.model.BroadcastNostrEventRequest?, + val broadcastNostrEventRequest: press.mantra.compose.database.model.BroadcastNostrEventRequest?, @Relation( parentColumns = ["id"], entityColumns = ["unsignedNostrEventId"] ) - val broadcastNostrEventReceipt: at.torch.compose.database.model.BroadcastNostrEventReceipt?, + val broadcastNostrEventReceipt: press.mantra.compose.database.model.BroadcastNostrEventReceipt?, @Relation( parentColumns = ["id"], entityColumns = ["unsignedNostrEventId"] ) - val synchronizeNostrEventRequests: List, + val synchronizeNostrEventRequests: List, ) diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalBroadcastNostrEventRequest.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalBroadcastNostrEventRequest.kt new file mode 100644 index 00000000..d4fb0dc1 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalBroadcastNostrEventRequest.kt @@ -0,0 +1,14 @@ +package press.mantra.compose.database.model.intermdiate + +import androidx.room3.Embedded +import androidx.room3.Relation + +data class LocalBroadcastNostrEventRequest( + @Embedded val broadcastNostrEventRequest: press.mantra.compose.database.model.BroadcastNostrEventRequest, + + @Relation( + parentColumns = ["nostrEventId"], + entityColumns = ["id"] + ) + val nostrEvent: press.mantra.compose.database.model.NostrEvent, +) diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalChatMessage.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalChatMessage.kt new file mode 100644 index 00000000..e4587a90 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalChatMessage.kt @@ -0,0 +1,34 @@ +package press.mantra.compose.database.model.intermdiate + +import androidx.room3.Embedded +import androidx.room3.Relation + +data class LocalChatMessage( + @Embedded val chatMessage: press.mantra.compose.database.model.ChatMessage, + + @Relation( + parentColumns = ["senderPublicKey"], + entityColumns = ["publicKey"] + ) + val profile: press.mantra.compose.database.model.Profile?, + + @Relation( + parentColumns = ["id"], + entityColumns = ["chatMessageId"] + ) + val chatMessageBroadcastNostrEventReceiptRelation: press.mantra.compose.database.model.ChatMessageBroadcastNostrEventReceiptRelation? = null, + + + @Relation( + parentColumns = ["id"], + entityColumns = ["chatMessageId"] + ) + val chatMessageBroadcastNostrEventRequestRelation: press.mantra.compose.database.model.ChatMessageBroadcastNostrEventRequestRelation? = null, + + + @Relation( + parentColumns = ["id"], + entityColumns = ["chatMessageId"] + ) + val chatMessageNostrEventRelation: press.mantra.compose.database.model.ChatMessageNostrEventRelation? = null, +) diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalChatRoom.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalChatRoom.kt similarity index 89% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalChatRoom.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalChatRoom.kt index 95c32576..74e5c014 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalChatRoom.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalChatRoom.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model.intermdiate +package press.mantra.compose.database.model.intermdiate import androidx.compose.material3.Text import androidx.compose.runtime.Composable @@ -7,9 +7,9 @@ import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.withStyle import androidx.room3.Embedded import androidx.room3.Relation -import at.torch.compose.database.model.ChatRoom -import at.torch.compose.database.model.Participant -import at.torch.compose.ui.composable.widgets.profile.ProfileColor +import press.mantra.compose.database.model.ChatRoom +import press.mantra.compose.database.model.Participant +import press.mantra.compose.ui.composable.widgets.profile.ProfileColor data class LocalChatRoom( @Embedded val chatRoom: ChatRoom, diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalInReplyToNostrEvent.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalInReplyToNostrEvent.kt similarity index 84% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalInReplyToNostrEvent.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalInReplyToNostrEvent.kt index d7a9b364..a703cbfd 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalInReplyToNostrEvent.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalInReplyToNostrEvent.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model.intermdiate +package press.mantra.compose.database.model.intermdiate import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -15,25 +15,26 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.room3.Embedded import androidx.room3.Relation -import at.torch.compose.extensions.toFormattedTimeAndDateString +import press.mantra.compose.extensions.toFormattedTimeAndDateString +import press.mantra.compose.ui.composable.widgets.profile.ProfileAvatar data class LocalInReplyToNostrEvent( - @Embedded val inReplyToRelation: at.torch.compose.database.model.InReplyToRelation, + @Embedded val inReplyToRelation: press.mantra.compose.database.model.InReplyToRelation, @Relation( parentColumns = ["inReplyToNostrEventId"], entityColumns = ["id"] ) - val nostrEvent: at.torch.compose.database.model.NostrEvent, + val nostrEvent: press.mantra.compose.database.model.NostrEvent, @Relation( parentColumns = ["inReplyToProfilePublicKey"], entityColumns = ["publicKey"] ) - val profile: at.torch.compose.database.model.Profile?, + val profile: press.mantra.compose.database.model.Profile?, @Relation( - entity = at.torch.compose.database.model.Mention::class, + entity = press.mantra.compose.database.model.Mention::class, parentColumns = ["inReplyToNostrEventId"], entityColumns = ["mentioningNostrEventId"], ) @@ -49,7 +50,7 @@ data class LocalInReplyToNostrEvent( ) { val profile = profile - _root_ide_package_.at.torch.compose.ui.composable.widgets.profile.ProfileAvatar( + ProfileAvatar( profile = profile, publicKey = nostrEvent.pubKey ) diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalMention.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalMention.kt similarity index 51% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalMention.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalMention.kt index f3d8ffca..cbc7780d 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalMention.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalMention.kt @@ -1,14 +1,14 @@ -package at.torch.compose.database.model.intermdiate +package press.mantra.compose.database.model.intermdiate import androidx.room3.Embedded import androidx.room3.Relation data class LocalMention( - @Embedded val mention: at.torch.compose.database.model.Mention, + @Embedded val mention: press.mantra.compose.database.model.Mention, @Relation( parentColumns = ["mentionedPublicKey"], entityColumns = ["publicKey"] ) - val profile: at.torch.compose.database.model.Profile?, + val profile: press.mantra.compose.database.model.Profile?, ) diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalNostrEvent.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalNostrEvent.kt similarity index 81% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalNostrEvent.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalNostrEvent.kt index 4ca02a43..a2921318 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalNostrEvent.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalNostrEvent.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model.intermdiate +package press.mantra.compose.database.model.intermdiate import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -13,41 +13,43 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.room3.Embedded import androidx.room3.Relation -import at.torch.compose.extensions.toFormattedTimeAndDateString +import press.mantra.compose.extensions.toFormattedTimeAndDateString import com.vitorpamplona.quartz.nip01Core.core.HexKey +import press.mantra.compose.ui.composable.widgets.content.RichContent +import press.mantra.compose.ui.composable.widgets.profile.ProfileAvatar data class LocalNostrEvent( - @Embedded val nostrEvent: at.torch.compose.database.model.NostrEvent, + @Embedded val nostrEvent: press.mantra.compose.database.model.NostrEvent, @Relation( parentColumns = ["pubKey"], entityColumns = ["publicKey"] ) - val profile: at.torch.compose.database.model.Profile?, + val profile: press.mantra.compose.database.model.Profile?, @Relation( - entity = at.torch.compose.database.model.RepostedRelation::class, + entity = press.mantra.compose.database.model.RepostedRelation::class, parentColumns = ["id"], entityColumns = ["repostingNostrEventId"] ) val localRepostedNostrEvent: LocalRepostedNostrEvent? = null, @Relation( - entity = at.torch.compose.database.model.QuotedRelation::class, + entity = press.mantra.compose.database.model.QuotedRelation::class, parentColumns = ["id"], entityColumns = ["quotingNostrEventId"] ) val localQuotedNostrEvent: LocalQuotedNostrEvent? = null, @Relation( - entity = at.torch.compose.database.model.InReplyToRelation::class, + entity = press.mantra.compose.database.model.InReplyToRelation::class, parentColumns = ["id"], entityColumns = ["replyingNostrEventId"] ) val localInReplyToNostrEvent: LocalInReplyToNostrEvent? = null, @Relation( - entity = at.torch.compose.database.model.Mention::class, + entity = press.mantra.compose.database.model.Mention::class, parentColumns = ["id"], entityColumns = ["mentioningNostrEventId"], ) @@ -65,7 +67,7 @@ data class LocalNostrEvent( ) { val profile = profile - _root_ide_package_.at.torch.compose.ui.composable.widgets.profile.ProfileAvatar( + ProfileAvatar( profile = profile, publicKey = nostrEvent.pubKey ) @@ -86,7 +88,7 @@ data class LocalNostrEvent( } } } - _root_ide_package_.at.torch.compose.ui.composable.widgets.content.RichContent( + RichContent( modifier = Modifier.fillMaxWidth().padding( horizontal = 20.dp ), diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalParticipant.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalParticipant.kt similarity index 50% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalParticipant.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalParticipant.kt index 459bb695..4f42f919 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalParticipant.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalParticipant.kt @@ -1,14 +1,14 @@ -package at.torch.compose.database.model.intermdiate +package press.mantra.compose.database.model.intermdiate import androidx.room3.Embedded import androidx.room3.Relation data class LocalParticipant( - @Embedded val participant: at.torch.compose.database.model.Participant, + @Embedded val participant: press.mantra.compose.database.model.Participant, @Relation( parentColumns = ["participantPublicKey"], entityColumns = ["publicKey"] ) - val profile: at.torch.compose.database.model.Profile?, + val profile: press.mantra.compose.database.model.Profile?, ) diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalPost.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalPost.kt similarity index 61% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalPost.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalPost.kt index 13399087..cdd630fd 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalPost.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalPost.kt @@ -1,9 +1,9 @@ -package at.torch.compose.database.model.intermdiate +package press.mantra.compose.database.model.intermdiate import androidx.room3.Embedded import androidx.room3.Relation -import at.torch.compose.database.model.Post -import at.torch.compose.database.model.Profile +import press.mantra.compose.database.model.Post +import press.mantra.compose.database.model.Profile data class LocalPost( @Embedded val post: Post, diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalProfile.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalProfile.kt similarity index 61% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalProfile.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalProfile.kt index b1a6599c..2914ca1d 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalProfile.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalProfile.kt @@ -1,9 +1,9 @@ -package at.torch.compose.database.model.intermdiate +package press.mantra.compose.database.model.intermdiate import androidx.room3.Embedded import androidx.room3.Relation -import at.torch.compose.database.model.NostrEvent -import at.torch.compose.database.model.Profile +import press.mantra.compose.database.model.NostrEvent +import press.mantra.compose.database.model.Profile data class LocalProfile( @Embedded val nostrEvent: NostrEvent, diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalProfileWithFollowers.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalProfileWithFollowers.kt similarity index 58% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalProfileWithFollowers.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalProfileWithFollowers.kt index 399245c2..1d9eac1b 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalProfileWithFollowers.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalProfileWithFollowers.kt @@ -1,26 +1,26 @@ -package at.torch.compose.database.model.intermdiate +package press.mantra.compose.database.model.intermdiate import androidx.room3.Embedded import androidx.room3.Junction import androidx.room3.Relation data class LocalProfileWithFollowers( - @Embedded val nostrEvent: at.torch.compose.database.model.NostrEvent, + @Embedded val nostrEvent: press.mantra.compose.database.model.NostrEvent, @Relation( parentColumns = ["pubKey"], entityColumns = ["publicKey"] ) - val profile: at.torch.compose.database.model.Profile, + val profile: press.mantra.compose.database.model.Profile, @Relation( parentColumns = ["pubKey"], entityColumns = ["publicKey"], associateBy = Junction( - value = at.torch.compose.database.model.Connection::class, + value = press.mantra.compose.database.model.Connection::class, parentColumns = ["destinationPublicKey"], entityColumns = ["sourcePublicKey"] ) ) - val followers: List + val followers: List ) diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalProfileWithFollowing.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalProfileWithFollowing.kt similarity index 58% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalProfileWithFollowing.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalProfileWithFollowing.kt index 61625589..2324f1ae 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalProfileWithFollowing.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalProfileWithFollowing.kt @@ -1,26 +1,26 @@ -package at.torch.compose.database.model.intermdiate +package press.mantra.compose.database.model.intermdiate import androidx.room3.Embedded import androidx.room3.Junction import androidx.room3.Relation data class LocalProfileWithFollowing( - @Embedded val nostrEvent: at.torch.compose.database.model.NostrEvent, + @Embedded val nostrEvent: press.mantra.compose.database.model.NostrEvent, @Relation( parentColumns = ["pubKey"], entityColumns = ["publicKey"] ) - val profile: at.torch.compose.database.model.Profile, + val profile: press.mantra.compose.database.model.Profile, @Relation( parentColumns = ["pubKey"], entityColumns = ["publicKey"], associateBy = Junction( - value = at.torch.compose.database.model.Connection::class, + value = press.mantra.compose.database.model.Connection::class, parentColumns = ["sourcePublicKey"], entityColumns = ["destinationPublicKey"] ) ) - val following: List + val following: List ) diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalQuotedNostrEvent.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalQuotedNostrEvent.kt similarity index 80% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalQuotedNostrEvent.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalQuotedNostrEvent.kt index d64b91ad..246e840f 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalQuotedNostrEvent.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalQuotedNostrEvent.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model.intermdiate +package press.mantra.compose.database.model.intermdiate import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -15,26 +15,32 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.room3.Embedded import androidx.room3.Relation -import at.torch.compose.extensions.toFormattedTimeAndDateString +import press.mantra.compose.extensions.toFormattedTimeAndDateString import com.vitorpamplona.quartz.nip01Core.core.HexKey +import press.mantra.compose.database.model.NostrEvent +import press.mantra.compose.database.model.Profile +import press.mantra.compose.database.model.QuotedRelation +import press.mantra.compose.ui.composable.widgets.content.RichContent +import press.mantra.compose.ui.composable.widgets.profile.ProfileAvatar +import press.mantra.compose.ui.theme.TorchTheme data class LocalQuotedNostrEvent( - @Embedded val quotedRelation: at.torch.compose.database.model.QuotedRelation, + @Embedded val quotedRelation: press.mantra.compose.database.model.QuotedRelation, @Relation( parentColumns = ["quotedNostrEventId"], entityColumns = ["id"] ) - val nostrEvent: at.torch.compose.database.model.NostrEvent, + val nostrEvent: press.mantra.compose.database.model.NostrEvent, @Relation( parentColumns = ["quotedProfilePublicKey"], entityColumns = ["publicKey"] ) - val profile: at.torch.compose.database.model.Profile?, + val profile: press.mantra.compose.database.model.Profile?, @Relation( - entity = at.torch.compose.database.model.Mention::class, + entity = press.mantra.compose.database.model.Mention::class, parentColumns = ["quotedNostrEventId"], entityColumns = ["mentioningNostrEventId"], ) @@ -56,7 +62,7 @@ data class LocalQuotedNostrEvent( horizontalArrangement = Arrangement.spacedBy(10.dp, Alignment.Start), verticalAlignment = Alignment.CenterVertically ) { - _root_ide_package_.at.torch.compose.ui.composable.widgets.profile.ProfileAvatar( + ProfileAvatar( publicKey = nostrEvent.pubKey, profile = profile ) @@ -73,7 +79,7 @@ data class LocalQuotedNostrEvent( Text( text = staticIdentifier, style = MaterialTheme.typography.bodySmall, - color = at.torch.compose.ui.composable.widgets.profile.ProfileColor.fromProfile(profile) + color = press.mantra.compose.ui.composable.widgets.profile.ProfileColor.fromProfile(profile) ) } } @@ -83,7 +89,7 @@ data class LocalQuotedNostrEvent( horizontal = 10.dp ) ) { - _root_ide_package_.at.torch.compose.ui.composable.widgets.content.RichContent( + RichContent( nostrEvent = nostrEvent, localQuotedNostrEvent = null, mentionedProfiles = mentionedProfiles, @@ -107,12 +113,12 @@ data class LocalQuotedNostrEvent( @Preview @Composable private fun LocalQuotedNostrEventPreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + TorchTheme { Surface( modifier = Modifier.padding(20.dp) ) { LocalQuotedNostrEvent( - nostrEvent = _root_ide_package_.at.torch.compose.database.model.NostrEvent( + nostrEvent = NostrEvent( id = "1c7213118d4e17c6bad5c6b11125f005619bc3e43374affb9cd6483f665fd5e6", content = "God is not in the habit of coming down from heaven to solve people’s problems on earth.", pubKey = "e5e3ad0272d1fbeead8e439a4ad3453374ca4969c8d2be84025ba4ef8ae5a522", @@ -120,12 +126,12 @@ private fun LocalQuotedNostrEventPreview() { sig = "hexsig", tags = emptyArray() ), - quotedRelation = _root_ide_package_.at.torch.compose.database.model.QuotedRelation( + quotedRelation = QuotedRelation( quotingNostrEventId = "e5e3ad0272d1fbeead8e439a4ad3453374ca4969c8d2be84025ba4ef8ae5a520", quotedProfilePublicKey = "e5e3ad0272d1fbeead8e439a4ad3453374ca4969c8d2be84025ba4ef8ae5a522", quotedNostrEventId = "1c7213118d4e17c6bad5c6b11125f005619bc3e43374affb9cd6483f665fd5e6" ), - profile = _root_ide_package_.at.torch.compose.database.model.Profile( + profile = Profile( publicKey = "e5e3ad0272d1fbeead8e439a4ad3453374ca4969c8d2be84025ba4ef8ae5a522", nostrEventId = "referenced", displayName = "Steve Biko" diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalRepostedNostrEvent.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalRepostedNostrEvent.kt similarity index 84% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalRepostedNostrEvent.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalRepostedNostrEvent.kt index 65781a06..f2c4dd26 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/intermdiate/LocalRepostedNostrEvent.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/intermdiate/LocalRepostedNostrEvent.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model.intermdiate +package press.mantra.compose.database.model.intermdiate import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -15,25 +15,26 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.room3.Embedded import androidx.room3.Relation -import at.torch.compose.extensions.toFormattedTimeAndDateString +import press.mantra.compose.extensions.toFormattedTimeAndDateString +import press.mantra.compose.ui.composable.widgets.profile.ProfileAvatar data class LocalRepostedNostrEvent( - @Embedded val repostedRelation: at.torch.compose.database.model.RepostedRelation, + @Embedded val repostedRelation: press.mantra.compose.database.model.RepostedRelation, @Relation( parentColumns = ["repostedNostrEventId"], entityColumns = ["id"] ) - val nostrEvent: at.torch.compose.database.model.NostrEvent, + val nostrEvent: press.mantra.compose.database.model.NostrEvent, @Relation( parentColumns = ["repostedProfilePublicKey"], entityColumns = ["publicKey"] ) - val profile: at.torch.compose.database.model.Profile?, + val profile: press.mantra.compose.database.model.Profile?, @Relation( - entity = at.torch.compose.database.model.Mention::class, + entity = press.mantra.compose.database.model.Mention::class, parentColumns = ["repostedNostrEventId"], entityColumns = ["mentioningNostrEventId"], ) @@ -49,7 +50,7 @@ data class LocalRepostedNostrEvent( ) { val profile = profile - _root_ide_package_.at.torch.compose.ui.composable.widgets.profile.ProfileAvatar( + ProfileAvatar( profile = profile, publicKey = nostrEvent.pubKey ) diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/BroadcastableEntity.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/BroadcastableEntity.kt similarity index 64% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/BroadcastableEntity.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/BroadcastableEntity.kt index 351bd01f..ea237627 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/BroadcastableEntity.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/BroadcastableEntity.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model.traits +package press.mantra.compose.database.model.traits import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/LocalStoreEntity.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/LocalStoreEntity.kt similarity index 61% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/LocalStoreEntity.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/LocalStoreEntity.kt index ac4a7ba1..7e2016ac 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/LocalStoreEntity.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/LocalStoreEntity.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model.traits +package press.mantra.compose.database.model.traits import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/NostrEventEntity.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/NostrEventEntity.kt similarity index 68% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/NostrEventEntity.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/NostrEventEntity.kt index dafa9978..94e7dd32 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/NostrEventEntity.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/NostrEventEntity.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model.traits +package press.mantra.compose.database.model.traits import com.vitorpamplona.quartz.nip01Core.core.HexKey diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/OptionalNostrEventEntity.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/OptionalNostrEventEntity.kt similarity index 70% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/OptionalNostrEventEntity.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/OptionalNostrEventEntity.kt index d5fb402a..0ca20e4e 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/OptionalNostrEventEntity.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/OptionalNostrEventEntity.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model.traits +package press.mantra.compose.database.model.traits import com.vitorpamplona.quartz.nip01Core.core.HexKey diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/ProfilePublicKeyEntity.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/ProfilePublicKeyEntity.kt similarity index 70% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/ProfilePublicKeyEntity.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/ProfilePublicKeyEntity.kt index d9c3c9ca..88ea5444 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/ProfilePublicKeyEntity.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/ProfilePublicKeyEntity.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model.traits +package press.mantra.compose.database.model.traits import com.vitorpamplona.quartz.nip01Core.core.HexKey diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/ReplyingToEntity.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/ReplyingToEntity.kt similarity index 68% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/ReplyingToEntity.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/ReplyingToEntity.kt index 31ac888e..520850d5 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/ReplyingToEntity.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/ReplyingToEntity.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model.traits +package press.mantra.compose.database.model.traits import com.vitorpamplona.quartz.nip01Core.core.HexKey diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/SoftDeletableEntity.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/SoftDeletableEntity.kt similarity index 63% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/SoftDeletableEntity.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/SoftDeletableEntity.kt index 41747908..8f31fc44 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/SoftDeletableEntity.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/SoftDeletableEntity.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model.traits +package press.mantra.compose.database.model.traits import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/TimestampedEntity.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/TimestampedEntity.kt similarity index 68% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/TimestampedEntity.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/TimestampedEntity.kt index 54596edc..ab406ed3 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/TimestampedEntity.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/TimestampedEntity.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model.traits +package press.mantra.compose.database.model.traits import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/UnsignedNostrEventEntity.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/UnsignedNostrEventEntity.kt similarity index 58% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/UnsignedNostrEventEntity.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/UnsignedNostrEventEntity.kt index 8e900c56..42be7007 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/UnsignedNostrEventEntity.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/UnsignedNostrEventEntity.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model.traits +package press.mantra.compose.database.model.traits interface UnsignedNostrEventEntity { val unsignedNostrEventId: Long? diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/UserViewableEntity.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/UserViewableEntity.kt similarity index 62% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/UserViewableEntity.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/UserViewableEntity.kt index 9397b2a6..e4566532 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/traits/UserViewableEntity.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/traits/UserViewableEntity.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model.traits +package press.mantra.compose.database.model.traits import kotlin.time.Instant diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/typealiases/HexArray.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/typealiases/HexArray.kt new file mode 100644 index 00000000..b0f09d5c --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/typealiases/HexArray.kt @@ -0,0 +1,4 @@ +package press.mantra.compose.database.model.typealiases + +typealias HexArray = Array + diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/typealiases/KindArray.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/typealiases/KindArray.kt new file mode 100644 index 00000000..8dcc654d --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/typealiases/KindArray.kt @@ -0,0 +1,3 @@ +package press.mantra.compose.database.model.typealiases + +typealias KindArray = Array \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/typealiases/SynchronizationFilterArray.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/typealiases/SynchronizationFilterArray.kt new file mode 100644 index 00000000..61d9d40d --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/typealiases/SynchronizationFilterArray.kt @@ -0,0 +1,3 @@ +package press.mantra.compose.database.model.typealiases + +typealias SynchronizationFilterArray = Array \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/types/SynchronizationFilter.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/types/SynchronizationFilter.kt similarity index 97% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/model/types/SynchronizationFilter.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/types/SynchronizationFilter.kt index d16e28db..3908ebd7 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/model/types/SynchronizationFilter.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/model/types/SynchronizationFilter.kt @@ -1,4 +1,4 @@ -package at.torch.compose.database.model.types +package press.mantra.compose.database.model.types import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.core.Kind diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/repository/DatabaseChatRepository.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/repository/DatabaseChatRepository.kt similarity index 95% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/repository/DatabaseChatRepository.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/repository/DatabaseChatRepository.kt index ab0c7658..2afbb8d3 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/repository/DatabaseChatRepository.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/repository/DatabaseChatRepository.kt @@ -1,15 +1,15 @@ -package at.torch.compose.database.repository +package press.mantra.compose.database.repository -import at.torch.compose.database.GENESIS_AT -import at.torch.compose.database.TorchDatabase -import at.torch.compose.database.model.ChatMessage -import at.torch.compose.database.model.ChatRoom -import at.torch.compose.database.model.GiftWrapPayload -import at.torch.compose.database.model.MarmotInnerEvent -import at.torch.compose.database.model.MarmotKeyPackage -import at.torch.compose.database.model.Participant -import at.torch.compose.database.model.intermdiate.LocalChatMessage -import at.torch.compose.database.model.intermdiate.LocalChatRoom +import press.mantra.compose.database.GENESIS_AT +import press.mantra.compose.database.TorchDatabase +import press.mantra.compose.database.model.ChatMessage +import press.mantra.compose.database.model.ChatRoom +import press.mantra.compose.database.model.GiftWrapPayload +import press.mantra.compose.database.model.MarmotInnerEvent +import press.mantra.compose.database.model.MarmotKeyPackage +import press.mantra.compose.database.model.Participant +import press.mantra.compose.database.model.intermdiate.LocalChatMessage +import press.mantra.compose.database.model.intermdiate.LocalChatRoom import co.touchlab.kermit.Logger import com.vitorpamplona.quartz.marmot.mip02Welcome.WelcomeEvent import com.vitorpamplona.quartz.marmot.mls.group.MlsGroup @@ -37,7 +37,7 @@ import kotlin.time.Instant class DatabaseChatRepository( private val database: TorchDatabase, private val scope: CoroutineScope -): at.torch.compose.repository.ChatRepository { +): press.mantra.compose.repository.ChatRepository { val logger = Logger.withTag(TAG) override suspend fun observeChatRoomListByPublicKey(publicKey: String): Flow> { return database.chatRoomDao().observeChatRoomListByUserPublicKey(publicKey) @@ -246,7 +246,7 @@ class DatabaseChatRepository( override fun updateChatRoomSubject( publicKey: String, subject: String - ): at.torch.compose.database.model.ChatRoom? { + ): press.mantra.compose.database.model.ChatRoom? { // TODO: Update chatRoom with subject... return null } diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/repository/DatabaseMarmotRepository.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/repository/DatabaseMarmotRepository.kt similarity index 95% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/repository/DatabaseMarmotRepository.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/repository/DatabaseMarmotRepository.kt index 21bc73eb..3e2180f6 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/repository/DatabaseMarmotRepository.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/repository/DatabaseMarmotRepository.kt @@ -1,12 +1,12 @@ -package at.torch.compose.database.repository +package press.mantra.compose.database.repository -import at.torch.compose.database.TorchDatabase -import at.torch.compose.database.model.MarmotInnerEvent -import at.torch.compose.database.model.MarmotKeyPackageBundle -import at.torch.compose.database.model.UnsignedNostrEvent -import at.torch.compose.extensions.toHex -import at.torch.compose.nostr.Relays -import at.torch.compose.repository.MarmotRepository +import press.mantra.compose.database.TorchDatabase +import press.mantra.compose.database.model.MarmotInnerEvent +import press.mantra.compose.database.model.MarmotKeyPackageBundle +import press.mantra.compose.database.model.UnsignedNostrEvent +import press.mantra.compose.extensions.toHex +import press.mantra.compose.nostr.Relays +import press.mantra.compose.repository.MarmotRepository import co.touchlab.kermit.Logger import com.vitorpamplona.quartz.marmot.mip00KeyPackages.KeyPackageEvent import com.vitorpamplona.quartz.marmot.mip00KeyPackages.KeyPackageRotationManager.Companion.KEY_PACKAGE_LIFETIME_SECONDS diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/database/repository/DatabaseNostrRepository.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/repository/DatabaseNostrRepository.kt similarity index 90% rename from composeApp/src/commonMain/kotlin/at/torch/compose/database/repository/DatabaseNostrRepository.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/database/repository/DatabaseNostrRepository.kt index 1f83fb8b..2725e624 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/database/repository/DatabaseNostrRepository.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/repository/DatabaseNostrRepository.kt @@ -1,15 +1,15 @@ -package at.torch.compose.database.repository +package press.mantra.compose.database.repository -import at.torch.compose.database.GENESIS_AT -import at.torch.compose.database.model.BroadcastNostrEventRequest -import at.torch.compose.database.model.NostrEvent -import at.torch.compose.database.model.Profile -import at.torch.compose.database.model.UnsignedNostrEvent -import at.torch.compose.database.model.intermdiate.LocalAccount -import at.torch.compose.database.model.intermdiate.LocalBroadcastNostrEventRequest -import at.torch.compose.database.model.types.SynchronizationFilter -import at.torch.compose.extensions.toHex -import at.torch.compose.nostr.Relays +import press.mantra.compose.database.GENESIS_AT +import press.mantra.compose.database.model.BroadcastNostrEventRequest +import press.mantra.compose.database.model.NostrEvent +import press.mantra.compose.database.model.Profile +import press.mantra.compose.database.model.UnsignedNostrEvent +import press.mantra.compose.database.model.intermdiate.LocalAccount +import press.mantra.compose.database.model.intermdiate.LocalBroadcastNostrEventRequest +import press.mantra.compose.database.model.types.SynchronizationFilter +import press.mantra.compose.extensions.toHex +import press.mantra.compose.nostr.Relays import co.touchlab.kermit.Logger import com.vitorpamplona.quartz.marmot.mip00KeyPackages.KeyPackageRelayListEvent import com.vitorpamplona.quartz.marmot.mip03GroupMessages.GroupEvent @@ -51,9 +51,9 @@ import kotlin.time.Clock import kotlin.time.Instant class DatabaseNostrRepository( - private val database: at.torch.compose.database.TorchDatabase, + private val database: press.mantra.compose.database.TorchDatabase, private val scope: CoroutineScope -): at.torch.compose.repository.NostrRepository, at.torch.compose.repository.RelayRepository { +): press.mantra.compose.repository.NostrRepository, press.mantra.compose.repository.RelayRepository { companion object { const val TAG = "DatabaseNostrRepository" @@ -81,14 +81,14 @@ class DatabaseNostrRepository( override suspend fun observeRelation( publicKey: HexKey, activePublicKey: HexKey - ): Flow> { + ): Flow> { return database.connectionDao().observeRelation( alicePublicKey = publicKey, bobPublicKey = activePublicKey ) } - override suspend fun deleteConnection(connection: at.torch.compose.database.model.Connection) { + override suspend fun deleteConnection(connection: press.mantra.compose.database.model.Connection) { database.connectionDao().delete(connection) } @@ -100,11 +100,11 @@ class DatabaseNostrRepository( return database.broadcastNostrEventRequestDao().observeBroadcastNostrEventRequestsByStatus("pending") } - override suspend fun observePendingSynchronizeNostrEventRequests(): Flow { + override suspend fun observePendingSynchronizeNostrEventRequests(): Flow { return database.synchronizeNostrEventRequestDao().observeSynchronizeNostrEventRequestsByStatus("pending") } - override suspend fun observePendingNegentropySynchronizeRequests(): Flow { + override suspend fun observePendingNegentropySynchronizeRequests(): Flow { return database.negentropySynchronizeRequestDao().observeNegentropySynchronizeRequestsByStatus("pending") } @@ -224,8 +224,8 @@ class DatabaseNostrRepository( publicKey: HexKey, mentionedPublicKeys: List, textInput: String, - inReplyToNostrEvent: at.torch.compose.database.model.intermdiate.LocalNostrEvent?, - quotedNostrEvent: at.torch.compose.database.model.intermdiate.LocalNostrEvent?, + inReplyToNostrEvent: press.mantra.compose.database.model.intermdiate.LocalNostrEvent?, + quotedNostrEvent: press.mantra.compose.database.model.intermdiate.LocalNostrEvent?, onError: () -> Unit, onSuccess: () -> Unit ) { @@ -393,7 +393,7 @@ class DatabaseNostrRepository( if (status == "published") { val broadcastNostrEventReceiptId = database.broadcastNostrEventReceiptDao().upsert( - _root_ide_package_.at.torch.compose.database.model.BroadcastNostrEventReceipt( + _root_ide_package_.press.mantra.compose.database.model.BroadcastNostrEventReceipt( nostrEventId = broadcastNostrEventRequest.nostrEventId, unsignedNostrEventId = broadcastNostrEventRequest.unsignedNostrEventId, isAccepted = true, @@ -406,7 +406,7 @@ class DatabaseNostrRepository( )?.let { chatMessageBroadcastNostrEventRequestRelation -> // This is actually a chatMessage related broadcast event... database.chatMessageBroadcastNostrEventReceiptRelationDao().upsert( - _root_ide_package_.at.torch.compose.database.model.ChatMessageBroadcastNostrEventReceiptRelation( + _root_ide_package_.press.mantra.compose.database.model.ChatMessageBroadcastNostrEventReceiptRelation( chatMessageId = chatMessageBroadcastNostrEventRequestRelation.chatMessageId, broadcastNostrEventReceiptId = broadcastNostrEventReceiptId ) @@ -439,7 +439,7 @@ class DatabaseNostrRepository( } } - override suspend fun synchronizeNostrEventRequestProcessed(synchronizeNostrEventRequest: at.torch.compose.database.model.SynchronizeNostrEventRequest) { + override suspend fun synchronizeNostrEventRequestProcessed(synchronizeNostrEventRequest: press.mantra.compose.database.model.SynchronizeNostrEventRequest) { database.synchronizeNostrEventRequestDao().upsert( synchronizeNostrEventRequest.copy( status = "sent", @@ -448,7 +448,7 @@ class DatabaseNostrRepository( ) } - override suspend fun negentropySynchronizeRequestProcessed(negentropySynchronizeRequest: at.torch.compose.database.model.NegentropySynchronizeRequest) { + override suspend fun negentropySynchronizeRequestProcessed(negentropySynchronizeRequest: press.mantra.compose.database.model.NegentropySynchronizeRequest) { database.negentropySynchronizeRequestDao().upsert( negentropySynchronizeRequest.copy( status = "sent", @@ -457,7 +457,7 @@ class DatabaseNostrRepository( ) } - override suspend fun saveBroadcastReceipt(broadcastNostrEventReceipt: at.torch.compose.database.model.BroadcastNostrEventReceipt) { + override suspend fun saveBroadcastReceipt(broadcastNostrEventReceipt: press.mantra.compose.database.model.BroadcastNostrEventReceipt) { database.broadcastNostrEventReceiptDao().upsert( broadcastNostrEventReceipt ) @@ -465,7 +465,7 @@ class DatabaseNostrRepository( override suspend fun saveNostrEvent( nostrEvent: NostrEvent, - synchronizeNostrEventRequest: at.torch.compose.database.model.SynchronizeNostrEventRequest, + synchronizeNostrEventRequest: press.mantra.compose.database.model.SynchronizeNostrEventRequest, synchronizationRelayURLs: List, activeKeyPair: KeyPair, ) { @@ -497,7 +497,7 @@ class DatabaseNostrRepository( override suspend fun saveNostrEvent( nostrEvent: NostrEvent, - negentropySynchronizeRequest: at.torch.compose.database.model.NegentropySynchronizeRequest, + negentropySynchronizeRequest: press.mantra.compose.database.model.NegentropySynchronizeRequest, synchronizationRelayURLs: List, activeKeyPair: KeyPair ) { @@ -526,14 +526,14 @@ class DatabaseNostrRepository( } override suspend fun queueSynchronizeNostrEvent( - synchronizeNostrEventRequests: List, + synchronizeNostrEventRequests: List, ) { database.synchronizeNostrEventRequestDao().insert( synchronizeNostrEventRequests ) } - override suspend fun queueNegentropySynchronizeRequest(negentropySynchronizeRequests: List) { + override suspend fun queueNegentropySynchronizeRequest(negentropySynchronizeRequests: List) { database.negentropySynchronizeRequestDao().insert( negentropySynchronizeRequests ) @@ -553,7 +553,7 @@ class DatabaseNostrRepository( ) } - override suspend fun observeNostrFeed(): Flow> { + override suspend fun observeNostrFeed(): Flow> { return database.nostrEventDao().observeNostrEvents( kinds = arrayOf( TextNoteEvent.KIND, @@ -564,7 +564,7 @@ class DatabaseNostrRepository( ) } - override suspend fun observeNostrFeed(synchronizationFilter: SynchronizationFilter): Flow> { + override suspend fun observeNostrFeed(synchronizationFilter: SynchronizationFilter): Flow> { return when { synchronizationFilter.kinds != null && synchronizationFilter.search != null -> { logger.d("observeFilteredNostrEvents: $synchronizationFilter") @@ -744,50 +744,50 @@ class DatabaseNostrRepository( } } - override suspend fun observeLocalNostrEventById(nostrEventId: String): Flow { + override suspend fun observeLocalNostrEventById(nostrEventId: String): Flow { return database.nostrEventDao().observeNostrEventById(nostrEventId) } - override suspend fun searchableProfiles(excludingPublicKeys: Array): List { + override suspend fun searchableProfiles(excludingPublicKeys: Array): List { return database.profileDao().getAllProfilesExcludingOnesWithThesePublicKeys( excludedPublicKeys = excludingPublicKeys ) } - override suspend fun filterProfiles(searchTerm: String): List { + override suspend fun filterProfiles(searchTerm: String): List { return database.profileDao().filterProfiles(searchTerm = searchTerm) } - override suspend fun observeProfileWithFollowers(publicKey: String): Flow { + override suspend fun observeProfileWithFollowers(publicKey: String): Flow { return database.profileDao().observeProfileWithFollowersByPublicKey(publicKey) } - override suspend fun observeProfileWithFollowing(publicKey: String): Flow { + override suspend fun observeProfileWithFollowing(publicKey: String): Flow { return database.profileDao().observeProfileWithFollowingByPublicKey(publicKey) } - override suspend fun getRecentSearches(): List { + override suspend fun getRecentSearches(): List { return database.recentSearchDao().getAllRecentSearches() } - override suspend fun removeRecentSearch(recentSearch: at.torch.compose.database.model.RecentSearch) { + override suspend fun removeRecentSearch(recentSearch: press.mantra.compose.database.model.RecentSearch) { database.recentSearchDao().deleteRecentSearch(recentSearch) } override suspend fun saveSearchQuery( query: String, - synchronizationFilterArray: at.torch.compose.database.model.typealiases.SynchronizationFilterArray? + synchronizationFilterArray: press.mantra.compose.database.model.typealiases.SynchronizationFilterArray? ) { database.recentSearchDao().upsert( - _root_ide_package_.at.torch.compose.database.model.RecentSearch( + _root_ide_package_.press.mantra.compose.database.model.RecentSearch( query = query, synchronizationFilters = synchronizationFilterArray ) ) } - override suspend fun observePublicKeyRelays(publicKey: String): Flow> { + override suspend fun observePublicKeyRelays(publicKey: String): Flow> { return database.relayDao().observePublicKeyRelays(publicKey) } diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/repository/DatabasePostRepository.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/repository/DatabasePostRepository.kt new file mode 100644 index 00000000..f2e3cc9a --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/repository/DatabasePostRepository.kt @@ -0,0 +1,5 @@ +package press.mantra.compose.database.repository + +class DatabasePostRepository( + private val database: press.mantra.compose.database.TorchDatabase +): press.mantra.compose.repository.PostRepository \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/database/repository/DatabaseSearchRepository.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/repository/DatabaseSearchRepository.kt new file mode 100644 index 00000000..6df22671 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/database/repository/DatabaseSearchRepository.kt @@ -0,0 +1,12 @@ +package press.mantra.compose.database.repository + +class DatabaseSearchRepository( + private val database: press.mantra.compose.database.TorchDatabase +): press.mantra.compose.repository.SearchRepository { + + override suspend fun submitSearch(synchronizeNostrEventRequests: List) { + database.synchronizeNostrEventRequestDao().insert( + synchronizeNostrEventRequests = synchronizeNostrEventRequests + ) + } +} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/GiftWrapImpersonationException.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/GiftWrapImpersonationException.kt new file mode 100644 index 00000000..3577ec73 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/GiftWrapImpersonationException.kt @@ -0,0 +1,3 @@ +package press.mantra.compose.exceptions + +open class GiftWrapImpersonationException(message: String? = null, cause: Throwable? = null) : Exception(message, cause) \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/GiftWrapPayloadUnsupportedException.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/GiftWrapPayloadUnsupportedException.kt new file mode 100644 index 00000000..3483de84 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/GiftWrapPayloadUnsupportedException.kt @@ -0,0 +1,3 @@ +package press.mantra.compose.exceptions + +open class GiftWrapPayloadUnsupportedException(message: String? = null, cause: Throwable? = null) : Exception(message, cause) \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/GiftWrapSealDecryptionException.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/GiftWrapSealDecryptionException.kt new file mode 100644 index 00000000..25677ec0 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/GiftWrapSealDecryptionException.kt @@ -0,0 +1,3 @@ +package press.mantra.compose.exceptions + +open class GiftWrapSealDecryptionException(message: String? = null, cause: Throwable? = null) : Exception(message, cause) \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/GiftWrapUnsealException.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/GiftWrapUnsealException.kt new file mode 100644 index 00000000..f828276e --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/GiftWrapUnsealException.kt @@ -0,0 +1,3 @@ +package press.mantra.compose.exceptions + +open class GiftWrapUnsealException(message: String? = null, cause: Throwable? = null) : Exception(message, cause) \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/InvalidNostrPrivateKeyException.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/InvalidNostrPrivateKeyException.kt new file mode 100644 index 00000000..6889ac44 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/InvalidNostrPrivateKeyException.kt @@ -0,0 +1,3 @@ +package press.mantra.compose.exceptions + +class InvalidNostrPrivateKeyException: RuntimeException() \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotMissingChatGroupException.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotMissingChatGroupException.kt similarity index 74% rename from composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotMissingChatGroupException.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotMissingChatGroupException.kt index 8a5f3aaa..99b73298 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotMissingChatGroupException.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotMissingChatGroupException.kt @@ -1,4 +1,4 @@ -package at.torch.compose.exceptions +package press.mantra.compose.exceptions class MarmotMissingChatGroupException(message: String? = null, cause: Throwable? = null) : Exception(message, cause) { } \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotMissingKeyPackageBundleException.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotMissingKeyPackageBundleException.kt similarity index 75% rename from composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotMissingKeyPackageBundleException.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotMissingKeyPackageBundleException.kt index ae17c85e..b5245787 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotMissingKeyPackageBundleException.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotMissingKeyPackageBundleException.kt @@ -1,4 +1,4 @@ -package at.torch.compose.exceptions +package press.mantra.compose.exceptions class MarmotMissingKeyPackageBundleException(message: String? = null, cause: Throwable? = null) : Exception(message, cause) { } \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotMissingKeyPackageEventIdException.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotMissingKeyPackageEventIdException.kt similarity index 75% rename from composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotMissingKeyPackageEventIdException.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotMissingKeyPackageEventIdException.kt index b472ee1e..f5e7d3ce 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotMissingKeyPackageEventIdException.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotMissingKeyPackageEventIdException.kt @@ -1,4 +1,4 @@ -package at.torch.compose.exceptions +package press.mantra.compose.exceptions class MarmotMissingKeyPackageEventIdException(message: String? = null, cause: Throwable? = null) : Exception(message, cause) { } \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotMissingNostrGroupDataExtension.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotMissingNostrGroupDataExtension.kt similarity index 75% rename from composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotMissingNostrGroupDataExtension.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotMissingNostrGroupDataExtension.kt index 4a997902..4077bffc 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotMissingNostrGroupDataExtension.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotMissingNostrGroupDataExtension.kt @@ -1,4 +1,4 @@ -package at.torch.compose.exceptions +package press.mantra.compose.exceptions class MarmotMissingNostrGroupDataExtension(message: String? = null, cause: Throwable? = null) : Exception(message, cause) { } \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotMissingRetainedExporterSecretsException.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotMissingRetainedExporterSecretsException.kt similarity index 75% rename from composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotMissingRetainedExporterSecretsException.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotMissingRetainedExporterSecretsException.kt index c33815ff..554ee8d8 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotMissingRetainedExporterSecretsException.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotMissingRetainedExporterSecretsException.kt @@ -1,3 +1,3 @@ -package at.torch.compose.exceptions +package press.mantra.compose.exceptions class MarmotMissingRetainedExporterSecretsException(message: String? = null, cause: Throwable? = null) : Exception(message, cause) \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotNotMemberOfChatGroupException.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotNotMemberOfChatGroupException.kt similarity index 75% rename from composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotNotMemberOfChatGroupException.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotNotMemberOfChatGroupException.kt index 01a110d7..0245d000 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotNotMemberOfChatGroupException.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotNotMemberOfChatGroupException.kt @@ -1,4 +1,4 @@ -package at.torch.compose.exceptions +package press.mantra.compose.exceptions class MarmotNotMemberOfChatGroupException(message: String? = null, cause: Throwable? = null) : Exception(message, cause) { } \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotUnprocessableInnerEventException.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotUnprocessableInnerEventException.kt similarity index 75% rename from composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotUnprocessableInnerEventException.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotUnprocessableInnerEventException.kt index edfb9f2f..d926febf 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotUnprocessableInnerEventException.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotUnprocessableInnerEventException.kt @@ -1,4 +1,4 @@ -package at.torch.compose.exceptions +package press.mantra.compose.exceptions class MarmotUnprocessableInnerEventException(message: String? = null, cause: Throwable? = null) : Exception(message, cause) { } \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotUnsupportedWireFormatException.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotUnsupportedWireFormatException.kt similarity index 75% rename from composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotUnsupportedWireFormatException.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotUnsupportedWireFormatException.kt index 6d201346..e2160c66 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotUnsupportedWireFormatException.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotUnsupportedWireFormatException.kt @@ -1,4 +1,4 @@ -package at.torch.compose.exceptions +package press.mantra.compose.exceptions class MarmotUnsupportedWireFormatException(message: String? = null, cause: Throwable? = null) : Exception(message, cause) { } \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotWelcomeEventMissingKeyPackageEventIdException.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotWelcomeEventMissingKeyPackageEventIdException.kt similarity index 77% rename from composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotWelcomeEventMissingKeyPackageEventIdException.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotWelcomeEventMissingKeyPackageEventIdException.kt index 772f7e2b..03ba3af3 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotWelcomeEventMissingKeyPackageEventIdException.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotWelcomeEventMissingKeyPackageEventIdException.kt @@ -1,4 +1,4 @@ -package at.torch.compose.exceptions +package press.mantra.compose.exceptions class MarmotWelcomeEventMissingKeyPackageEventIdException(message: String? = null, cause: Throwable? = null) : Exception(message, cause) { } \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotWelcomeMismatchedGroupIdException.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotWelcomeMismatchedGroupIdException.kt similarity index 75% rename from composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotWelcomeMismatchedGroupIdException.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotWelcomeMismatchedGroupIdException.kt index 567f22c0..ec4299aa 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotWelcomeMismatchedGroupIdException.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotWelcomeMismatchedGroupIdException.kt @@ -1,4 +1,4 @@ -package at.torch.compose.exceptions +package press.mantra.compose.exceptions class MarmotWelcomeMismatchedGroupIdException(message: String? = null, cause: Throwable? = null) : Exception(message, cause) { } \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotWelcomeMissingGroupIdException.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotWelcomeMissingGroupIdException.kt similarity index 75% rename from composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotWelcomeMissingGroupIdException.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotWelcomeMissingGroupIdException.kt index d845356e..32dd8fb4 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/MarmotWelcomeMissingGroupIdException.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/MarmotWelcomeMissingGroupIdException.kt @@ -1,4 +1,4 @@ -package at.torch.compose.exceptions +package press.mantra.compose.exceptions class MarmotWelcomeMissingGroupIdException(message: String? = null, cause: Throwable? = null) : Exception(message, cause) { } \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/NetworkException.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/NetworkException.kt similarity index 52% rename from composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/NetworkException.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/NetworkException.kt index ba9c387f..7b673c2e 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/NetworkException.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/NetworkException.kt @@ -1,4 +1,4 @@ -package at.torch.compose.exceptions +package press.mantra.compose.exceptions class NetworkException( message: String? = null, diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/NostrNoticeException.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/NostrNoticeException.kt similarity index 51% rename from composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/NostrNoticeException.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/NostrNoticeException.kt index b17bfd1e..24bde9d6 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/NostrNoticeException.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/NostrNoticeException.kt @@ -1,4 +1,4 @@ -package at.torch.compose.exceptions +package press.mantra.compose.exceptions class NostrNoticeException( val reason: String?, diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/NostrPublishException.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/NostrPublishException.kt similarity index 53% rename from composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/NostrPublishException.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/NostrPublishException.kt index 6a963bf8..65941689 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/NostrPublishException.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/NostrPublishException.kt @@ -1,3 +1,3 @@ -package at.torch.compose.exceptions +package press.mantra.compose.exceptions class NostrPublishException(override val cause: Throwable?) : RuntimeException() \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/SignatureException.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/SignatureException.kt new file mode 100644 index 00000000..36f5ef15 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/SignatureException.kt @@ -0,0 +1,3 @@ +package press.mantra.compose.exceptions + +open class SignatureException(message: String? = null, cause: Throwable? = null) : Exception(message, cause) \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/SigningKeyNotFoundException.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/SigningKeyNotFoundException.kt similarity index 77% rename from composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/SigningKeyNotFoundException.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/SigningKeyNotFoundException.kt index 092cff26..17a2ac2a 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/exceptions/SigningKeyNotFoundException.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/SigningKeyNotFoundException.kt @@ -1,4 +1,4 @@ -package at.torch.compose.exceptions +package press.mantra.compose.exceptions class SigningKeyNotFoundException(message: String? = null, cause: Throwable? = null) : SignatureException( message, diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/SigningRejectedException.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/SigningRejectedException.kt new file mode 100644 index 00000000..1304a3bb --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/exceptions/SigningRejectedException.kt @@ -0,0 +1,3 @@ +package press.mantra.compose.exceptions + +class SigningRejectedException(message: String? = null, cause: Throwable? = null) : SignatureException(message, cause) \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/extensions/Credentials.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/extensions/Credentials.kt similarity index 93% rename from composeApp/src/commonMain/kotlin/at/torch/compose/extensions/Credentials.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/extensions/Credentials.kt index 15ebbcde..0e466414 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/extensions/Credentials.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/extensions/Credentials.kt @@ -1,4 +1,4 @@ -package at.torch.compose.extensions +package press.mantra.compose.extensions import co.touchlab.kermit.Logger import com.vitorpamplona.quartz.nip19Bech32.bech32.Bech32 @@ -65,6 +65,6 @@ fun String.extractKeyPairFromPrivateKeyOrThrow(): Pair { nsec to pubkey.toNpub() } catch (error: IllegalArgumentException) { Logger.withTag("String.extractKeyPairFromPrivateKeyOrThrow").w(error) { error.message ?: "" } - throw _root_ide_package_.at.torch.compose.exceptions.InvalidNostrPrivateKeyException() + throw _root_ide_package_.press.mantra.compose.exceptions.InvalidNostrPrivateKeyException() } } \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/extensions/Instant.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/extensions/Instant.kt similarity index 94% rename from composeApp/src/commonMain/kotlin/at/torch/compose/extensions/Instant.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/extensions/Instant.kt index 34c9220f..e14ca38a 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/extensions/Instant.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/extensions/Instant.kt @@ -1,4 +1,4 @@ -package at.torch.compose.extensions +package press.mantra.compose.extensions import kotlinx.datetime.LocalDateTime import kotlinx.datetime.TimeZone diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/extensions/MlsGroupExtensions.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/extensions/MlsGroupExtensions.kt similarity index 80% rename from composeApp/src/commonMain/kotlin/at/torch/compose/extensions/MlsGroupExtensions.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/extensions/MlsGroupExtensions.kt index 265dec6f..a91bb457 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/extensions/MlsGroupExtensions.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/extensions/MlsGroupExtensions.kt @@ -1,4 +1,4 @@ -package at.torch.compose.extensions +package press.mantra.compose.extensions import com.vitorpamplona.quartz.marmot.mls.group.MlsGroup diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/extensions/Phoenix.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/extensions/Phoenix.kt similarity index 92% rename from composeApp/src/commonMain/kotlin/at/torch/compose/extensions/Phoenix.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/extensions/Phoenix.kt index 8fdfdfc0..e0eef736 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/extensions/Phoenix.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/extensions/Phoenix.kt @@ -1,4 +1,4 @@ -package at.torch.compose.extensions +package press.mantra.compose.extensions import fr.acinq.phoenix.PhoenixGlobal import fr.acinq.phoenix.data.StartBusinessResult diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/managers/AuxDatabaseManager.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/managers/AuxDatabaseManager.kt new file mode 100644 index 00000000..30813224 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/managers/AuxDatabaseManager.kt @@ -0,0 +1,26 @@ +package press.mantra.compose.managers + +class AuxDatabaseManager( + mantraGlobal: press.mantra.compose.MantraGlobal +) { + val auxDatabase by lazy { + _root_ide_package_.press.mantra.compose.database.builder.getRoomDatabase( + press.mantra.compose.database.builder.PlatformDatabaseBuilder.getDatabaseBuilder( + mantraGlobal.platformContext + ) + ) + } + + /** + * Dynamic data like user feeds and the likes will be in a in-memory db. + * + * We may also decide to just use the normal DB and manage what's saved better... + */ + val inMemoryAuxDatabase by lazy { + _root_ide_package_.press.mantra.compose.database.builder.getRoomDatabase( + press.mantra.compose.database.builder.PlatformDatabaseBuilder.getInMemoryDatabaseBuilder( + mantraGlobal.platformContext + ) + ) + } +} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/managers/MarmotInboundManager.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/managers/MarmotInboundManager.kt similarity index 98% rename from composeApp/src/commonMain/kotlin/at/torch/compose/managers/MarmotInboundManager.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/managers/MarmotInboundManager.kt index 5e3b242f..4eb725a3 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/managers/MarmotInboundManager.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/managers/MarmotInboundManager.kt @@ -1,12 +1,12 @@ -package at.torch.compose.managers +package press.mantra.compose.managers -import at.torch.compose.database.TorchDatabase -import at.torch.compose.database.model.Participant -import at.torch.compose.database.model.intermdiate.LocalChatRoom -import at.torch.compose.exceptions.MarmotMissingChatGroupException -import at.torch.compose.exceptions.MarmotUnsupportedWireFormatException -import at.torch.compose.extensions.exporterSecret -import at.torch.compose.extensions.toHex +import press.mantra.compose.database.TorchDatabase +import press.mantra.compose.database.model.Participant +import press.mantra.compose.database.model.intermdiate.LocalChatRoom +import press.mantra.compose.exceptions.MarmotMissingChatGroupException +import press.mantra.compose.exceptions.MarmotUnsupportedWireFormatException +import press.mantra.compose.extensions.exporterSecret +import press.mantra.compose.extensions.toHex import co.touchlab.kermit.Logger import com.vitorpamplona.quartz.marmot.GroupEventResult import com.vitorpamplona.quartz.marmot.mip03GroupMessages.CommitOrdering diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/network/UserAgent.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/UserAgent.kt similarity index 81% rename from composeApp/src/commonMain/kotlin/at/torch/compose/network/UserAgent.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/network/UserAgent.kt index f2284da4..87744cfd 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/network/UserAgent.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/UserAgent.kt @@ -1,4 +1,4 @@ -package at.torch.compose.network +package press.mantra.compose.network object UserAgent { const val APP_NAME = "Torch" diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/network/dto/RelayDTO.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/dto/RelayDTO.kt similarity index 87% rename from composeApp/src/commonMain/kotlin/at/torch/compose/network/dto/RelayDTO.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/network/dto/RelayDTO.kt index 27f30d95..88dc9f31 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/network/dto/RelayDTO.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/dto/RelayDTO.kt @@ -1,4 +1,4 @@ -package at.torch.compose.network.dto +package press.mantra.compose.network.dto import kotlinx.serialization.Serializable @@ -29,7 +29,7 @@ data class RelayDTO( } } -fun at.torch.compose.database.model.Relay.mapToRelayDTO() = +fun press.mantra.compose.database.model.Relay.mapToRelayDTO() = RelayDTO( url = this.url, read = this.read, diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/network/relays/FallbackRelays.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/relays/FallbackRelays.kt similarity index 73% rename from composeApp/src/commonMain/kotlin/at/torch/compose/network/relays/FallbackRelays.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/network/relays/FallbackRelays.kt index fa4312de..9711c04f 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/network/relays/FallbackRelays.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/relays/FallbackRelays.kt @@ -1,6 +1,6 @@ -package at.torch.compose.network.relays +package press.mantra.compose.network.relays -import at.torch.compose.network.dto.toRelayDTO +import press.mantra.compose.network.dto.toRelayDTO val FALLBACK_RELAYS = listOf( "wss://relay.primal.net", diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/network/relays/NostrPublishResult.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/relays/NostrPublishResult.kt similarity index 56% rename from composeApp/src/commonMain/kotlin/at/torch/compose/network/relays/NostrPublishResult.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/network/relays/NostrPublishResult.kt index bb4c6a56..5b7611fb 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/network/relays/NostrPublishResult.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/relays/NostrPublishResult.kt @@ -1,6 +1,6 @@ -package at.torch.compose.network.relays +package press.mantra.compose.network.relays -import at.torch.compose.network.sockets.NostrIncomingMessage +import press.mantra.compose.network.sockets.NostrIncomingMessage data class NostrPublishResult( val result: NostrIncomingMessage? = null, diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/network/relays/RelayPool.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/relays/RelayPool.kt similarity index 77% rename from composeApp/src/commonMain/kotlin/at/torch/compose/network/relays/RelayPool.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/network/relays/RelayPool.kt index 1e2ebcac..0ec03267 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/network/relays/RelayPool.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/relays/RelayPool.kt @@ -1,9 +1,9 @@ -package at.torch.compose.network.relays +package press.mantra.compose.network.relays import androidx.annotation.VisibleForTesting -import at.torch.compose.network.dto.toRelayDTO -import at.torch.compose.network.sockets.filterByEventId -import at.torch.compose.network.sockets.filterBySubscriptionId +import press.mantra.compose.network.dto.toRelayDTO +import press.mantra.compose.network.sockets.filterByEventId +import press.mantra.compose.network.sockets.filterBySubscriptionId import co.touchlab.kermit.Logger import com.vitorpamplona.quartz.nip01Core.core.OptimizedJsonMapper import com.vitorpamplona.quartz.nip01Core.relay.commands.toRelay.CloseCmd @@ -37,8 +37,8 @@ import kotlin.time.Duration.Companion.milliseconds * https://github.com/PrimalHQ/primal-android-app/blob/8a912053131764c39711cd0dc5012645498c9a4f/app/src/main/kotlin/net/primal/android/networking/relays/RelayPool.kt */ class RelayPool( - private val nostrSocketClientFactory: at.torch.compose.network.sockets.NostrSocketClientFactory, - private val cachingImportRepository: at.torch.compose.repository.CachingImportRepository, + private val nostrSocketClientFactory: press.mantra.compose.network.sockets.NostrSocketClientFactory, + private val cachingImportRepository: press.mantra.compose.repository.CachingImportRepository, ) { val logger = Logger.withTag("RelayPool") @@ -48,12 +48,12 @@ class RelayPool( private val scope = CoroutineScope(Dispatchers.IO) - val relays: MutableSet = mutableSetOf() + val relays: MutableSet = mutableSetOf() private val relayMutex = Mutex() @VisibleForTesting - var socketClients = setOf() + var socketClients = setOf() private val _relayPoolStatus = MutableStateFlow(mapOf()) val relayPoolStatus = _relayPoolStatus.asStateFlow() @@ -64,15 +64,15 @@ class RelayPool( } } - private val onSocketConnectionOpenedCallback: at.torch.compose.network.sockets.SocketConnectionOpenedCallback = { url -> + private val onSocketConnectionOpenedCallback: press.mantra.compose.network.sockets.SocketConnectionOpenedCallback = { url -> updateRelayStatus(url = url, connected = true) } - private val onSocketConnectionClosedCallback: at.torch.compose.network.sockets.SocketConnectionClosedCallback = { url, _ -> + private val onSocketConnectionClosedCallback: press.mantra.compose.network.sockets.SocketConnectionClosedCallback = { url, _ -> updateRelayStatus(url = url, connected = false) } - fun changeRelays(relays: List) { + fun changeRelays(relays: List) { val existingRelayUrls = socketClients.map { it.socketUrl } val newRelayUrls = relays.map { it.url } @@ -94,7 +94,7 @@ class RelayPool( this.relays.addAll(relays) } - fun removeRelays(relays: Set) { + fun removeRelays(relays: Set) { val relayUrls = relays.map { it.url } val toRemoveSocketClients = socketClients.filter { it.socketUrl in relayUrls } @@ -111,7 +111,7 @@ class RelayPool( this.relays.removeAll(relays) } - suspend fun addRelaysIfMissing(relays: Set) { + suspend fun addRelaysIfMissing(relays: Set) { relayMutex.withLock { val existingRelayUrls = socketClients.map { NormalizedRelayUrl(it.socketUrl).displayUrl() } val newRelayUrls = relays.map { it.url } @@ -148,7 +148,7 @@ class RelayPool( } } - private fun List.mapAsNostrSocketClient() = + private fun List.mapAsNostrSocketClient() = this.map { nostrSocketClientFactory.create( wssUrl = it.url, @@ -157,8 +157,8 @@ class RelayPool( ) } - @Throws(at.torch.compose.exceptions.NostrPublishException::class) - suspend fun publishEvent(nostrEvent: at.torch.compose.database.model.NostrEvent, relays: Set = emptySet()): Flow { + @Throws(press.mantra.compose.exceptions.NostrPublishException::class) + suspend fun publishEvent(nostrEvent: press.mantra.compose.database.model.NostrEvent, relays: Set = emptySet()): Flow { val relayUrls = relays.map { NormalizedRelayUrl(it.url).displayUrl() } return if (relayUrls.isEmpty()) { @@ -175,7 +175,7 @@ class RelayPool( } } - suspend fun query(reqCommand: ReqCmd, relayUrl: String): Flow { + suspend fun query(reqCommand: ReqCmd, relayUrl: String): Flow { addRelaysIfMissing( setOf( NormalizedRelayUrl(relayUrl).url.toRelayDTO() @@ -188,7 +188,7 @@ class RelayPool( val filterRequest = OptimizedJsonMapper.toJson(reqCommand) if (nostrSocketClient == null) { - throw _root_ide_package_.at.torch.compose.exceptions.NetworkException("$relayUrl is not connected") + throw _root_ide_package_.press.mantra.compose.exceptions.NetworkException("$relayUrl is not connected") } return coroutineScope { val eventFlow = nostrSocketClient.queryAsFlow(reqCommand.subId) @@ -199,7 +199,7 @@ class RelayPool( } } - suspend fun negentropySync(negOpenCmd: NegOpenCmd, relayUrl: String): Flow { + suspend fun negentropySync(negOpenCmd: NegOpenCmd, relayUrl: String): Flow { addRelaysIfMissing( setOf( NormalizedRelayUrl(relayUrl).url.toRelayDTO() @@ -212,7 +212,7 @@ class RelayPool( val negentropySyncRequest = OptimizedJsonMapper.toJson(negOpenCmd) if (nostrSocketClient == null) { - throw _root_ide_package_.at.torch.compose.exceptions.NetworkException("$relayUrl is not connected") + throw _root_ide_package_.press.mantra.compose.exceptions.NetworkException("$relayUrl is not connected") } return coroutineScope { val eventFlow = nostrSocketClient.queryAsFlow(negOpenCmd.subId) @@ -235,7 +235,7 @@ class RelayPool( val closeSubscription = OptimizedJsonMapper.toJson(closeCmd) if (nostrSocketClient == null) { - throw _root_ide_package_.at.torch.compose.exceptions.NetworkException("$relayUrl is not connected") + throw _root_ide_package_.press.mantra.compose.exceptions.NetworkException("$relayUrl is not connected") } coroutineScope { with(nostrSocketClient) { @@ -257,7 +257,7 @@ class RelayPool( val closeNegentropySubscription = OptimizedJsonMapper.toJson(negCloseCmd) if (nostrSocketClient == null) { - throw _root_ide_package_.at.torch.compose.exceptions.NetworkException("$relayUrl is not connected") + throw _root_ide_package_.press.mantra.compose.exceptions.NetworkException("$relayUrl is not connected") } coroutineScope { with(nostrSocketClient) { @@ -266,21 +266,21 @@ class RelayPool( } } - private fun Flow.transformWhileEventsAreIncoming() = + private fun Flow.transformWhileEventsAreIncoming() = transformWhile { emit(it) - it is at.torch.compose.network.sockets.NostrIncomingMessage.EventMessage || it is at.torch.compose.network.sockets.NostrIncomingMessage.EventsMessage + it is press.mantra.compose.network.sockets.NostrIncomingMessage.EventMessage || it is press.mantra.compose.network.sockets.NostrIncomingMessage.EventsMessage } @OptIn(FlowPreview::class) - private suspend fun at.torch.compose.network.sockets.NostrSocketClient.queryAsFlow(subscriptionId: String): Flow { + private suspend fun press.mantra.compose.network.sockets.NostrSocketClient.queryAsFlow(subscriptionId: String): Flow { return this.incomingMessages .filterBySubscriptionId(id = subscriptionId) // .transformWhileEventsAreIncoming() } @OptIn(FlowPreview::class) - private suspend fun handlePublishEventToRelays(relayConnections: Set, nostrEvent: at.torch.compose.database.model.NostrEvent): Flow { + private suspend fun handlePublishEventToRelays(relayConnections: Set, nostrEvent: press.mantra.compose.database.model.NostrEvent): Flow { val responseFlow = MutableSharedFlow() relayConnections.forEach { nostrSocketClient -> scope.launch { @@ -329,13 +329,13 @@ class RelayPool( } @FlowPreview - private suspend fun at.torch.compose.network.sockets.NostrSocketClient.collectPublishResponse(eventId: String): at.torch.compose.network.sockets.NostrIncomingMessage.OkMessage { + private suspend fun press.mantra.compose.network.sockets.NostrSocketClient.collectPublishResponse(eventId: String): press.mantra.compose.network.sockets.NostrIncomingMessage.OkMessage { return incomingMessages .filterByEventId(id = eventId) .transform { when (it) { - is at.torch.compose.network.sockets.NostrIncomingMessage.OkMessage -> emit(it) - is at.torch.compose.network.sockets.NostrIncomingMessage.NoticeMessage -> throw _root_ide_package_.at.torch.compose.exceptions.NostrNoticeException( + is press.mantra.compose.network.sockets.NostrIncomingMessage.OkMessage -> emit(it) + is press.mantra.compose.network.sockets.NostrIncomingMessage.NoticeMessage -> throw _root_ide_package_.press.mantra.compose.exceptions.NostrNoticeException( reason = it.message ) else -> error("$it is not allowed") @@ -346,6 +346,6 @@ class RelayPool( } private fun NostrPublishResult.isSuccessful(): Boolean { - return result is at.torch.compose.network.sockets.NostrIncomingMessage.OkMessage && result.success + return result is press.mantra.compose.network.sockets.NostrIncomingMessage.OkMessage && result.success } } diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/network/relays/RelaysSocketManager.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/relays/RelaysSocketManager.kt similarity index 80% rename from composeApp/src/commonMain/kotlin/at/torch/compose/network/relays/RelaysSocketManager.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/network/relays/RelaysSocketManager.kt index b2104762..7adca36e 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/network/relays/RelaysSocketManager.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/relays/RelaysSocketManager.kt @@ -1,6 +1,6 @@ -package at.torch.compose.network.relays +package press.mantra.compose.network.relays -import at.torch.compose.network.dto.mapToRelayDTO +import press.mantra.compose.network.dto.mapToRelayDTO import co.touchlab.kermit.Logger import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.relay.commands.toRelay.CloseCmd @@ -29,9 +29,9 @@ import kotlinx.coroutines.sync.withLock */ class RelaysSocketManager( private val activeWalletStateFlow: StateFlow, - private val nostrSocketClientFactory: at.torch.compose.network.sockets.NostrSocketClientFactory, - private val cachingImportRepository: at.torch.compose.repository.CachingImportRepository, - private val relayRepository: at.torch.compose.repository.RelayRepository, + private val nostrSocketClientFactory: press.mantra.compose.network.sockets.NostrSocketClientFactory, + private val cachingImportRepository: press.mantra.compose.repository.CachingImportRepository, + private val relayRepository: press.mantra.compose.repository.RelayRepository, ) { val logger = Logger.withTag("RelaysSocketManager") private val scope = CoroutineScope(Dispatchers.IO) @@ -48,7 +48,7 @@ class RelaysSocketManager( /** * Logical relayPool */ - private val userRelays = mutableSetOf() + private val userRelays = mutableSetOf() val userRelayPoolStatus = relayPool.relayPoolStatus @@ -87,7 +87,7 @@ class RelaysSocketManager( } } - private suspend fun updateRelayPools(regularRelays: List?) { + private suspend fun updateRelayPools(regularRelays: List?) { relayPoolsMutex.withLock { val userRelaysChanged = relayPool.relays != regularRelays if (userRelaysChanged && !regularRelays.isNullOrEmpty()) { @@ -101,8 +101,8 @@ class RelaysSocketManager( relayPool.closePool() } - @Throws(at.torch.compose.exceptions.NostrPublishException::class) - suspend fun publishEvent(nostrEvent: at.torch.compose.database.model.NostrEvent): Flow { + @Throws(press.mantra.compose.exceptions.NostrPublishException::class) + suspend fun publishEvent(nostrEvent: press.mantra.compose.database.model.NostrEvent): Flow { return if (userRelays.isNotEmpty()) { relayPool.publishEvent( nostrEvent = nostrEvent, @@ -116,8 +116,8 @@ class RelaysSocketManager( } } - @Throws(at.torch.compose.exceptions.NostrPublishException::class) - suspend fun publishEvent(nostrEvent: at.torch.compose.database.model.NostrEvent, relays: Set): Flow { + @Throws(press.mantra.compose.exceptions.NostrPublishException::class) + suspend fun publishEvent(nostrEvent: press.mantra.compose.database.model.NostrEvent, relays: Set): Flow { logger.d("publishEvent: $nostrEvent") return relayPool.publishEvent( nostrEvent = nostrEvent, @@ -135,7 +135,7 @@ class RelaysSocketManager( // suspend fun tryConnectingToUserRelay(url: String) = relayPool.tryConnectingToRelay(url) - suspend fun query(reqCommand: ReqCmd, relayUrl: String): Flow { + suspend fun query(reqCommand: ReqCmd, relayUrl: String): Flow { return relayPool.query( reqCommand = reqCommand, relayUrl = relayUrl @@ -150,7 +150,7 @@ class RelaysSocketManager( ) } - suspend fun negentropySync(negOpenCmd: NegOpenCmd, relayUrl: String): Flow { + suspend fun negentropySync(negOpenCmd: NegOpenCmd, relayUrl: String): Flow { return relayPool.negentropySync( negOpenCmd = negOpenCmd, relayUrl = relayUrl diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/network/relays/broadcast/BroadcastEventResponse.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/relays/broadcast/BroadcastEventResponse.kt similarity index 81% rename from composeApp/src/commonMain/kotlin/at/torch/compose/network/relays/broadcast/BroadcastEventResponse.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/network/relays/broadcast/BroadcastEventResponse.kt index 4eb6dd02..d7770fba 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/network/relays/broadcast/BroadcastEventResponse.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/relays/broadcast/BroadcastEventResponse.kt @@ -1,4 +1,4 @@ -package at.torch.compose.network.relays.broadcast +package press.mantra.compose.network.relays.broadcast import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/network/relays/broadcast/BroadcastRequestBody.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/relays/broadcast/BroadcastRequestBody.kt similarity index 79% rename from composeApp/src/commonMain/kotlin/at/torch/compose/network/relays/broadcast/BroadcastRequestBody.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/network/relays/broadcast/BroadcastRequestBody.kt index 9747e261..3fe48b1f 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/network/relays/broadcast/BroadcastRequestBody.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/relays/broadcast/BroadcastRequestBody.kt @@ -1,4 +1,4 @@ -package at.torch.compose.network.relays.broadcast +package press.mantra.compose.network.relays.broadcast import com.vitorpamplona.quartz.nip01Core.core.Event import kotlinx.serialization.Serializable diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/network/serialization/CommonJson.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/serialization/CommonJson.kt similarity index 95% rename from composeApp/src/commonMain/kotlin/at/torch/compose/network/serialization/CommonJson.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/network/serialization/CommonJson.kt index 846ab57e..2f45a68e 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/network/serialization/CommonJson.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/serialization/CommonJson.kt @@ -1,4 +1,4 @@ -package at.torch.compose.network.serialization +package press.mantra.compose.network.serialization import kotlinx.serialization.json.Json import kotlinx.serialization.json.JsonBuilder diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/network/serialization/SocketsJson.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/serialization/SocketsJson.kt similarity index 79% rename from composeApp/src/commonMain/kotlin/at/torch/compose/network/serialization/SocketsJson.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/network/serialization/SocketsJson.kt index fbf17afc..45466eb2 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/network/serialization/SocketsJson.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/serialization/SocketsJson.kt @@ -1,4 +1,4 @@ -package at.torch.compose.network.serialization +package press.mantra.compose.network.serialization import co.touchlab.kermit.Logger import kotlinx.serialization.json.JsonObject @@ -7,7 +7,7 @@ import kotlinx.serialization.json.decodeFromJsonElement internal val SocketsJson = CommonJson -fun JsonObject?.asNostrEventOrNull(): at.torch.compose.database.model.NostrEvent? { +fun JsonObject?.asNostrEventOrNull(): press.mantra.compose.database.model.NostrEvent? { return try { if (this != null) SocketsJson.decodeFromJsonElement(this) else null } catch (error: IllegalArgumentException) { diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/network/sockets/NostrIncomingMessage.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/sockets/NostrIncomingMessage.kt similarity index 76% rename from composeApp/src/commonMain/kotlin/at/torch/compose/network/sockets/NostrIncomingMessage.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/network/sockets/NostrIncomingMessage.kt index c1049895..cc022157 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/network/sockets/NostrIncomingMessage.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/sockets/NostrIncomingMessage.kt @@ -1,10 +1,10 @@ -package at.torch.compose.network.sockets +package press.mantra.compose.network.sockets sealed class NostrIncomingMessage { data class EventMessage( val subscriptionId: String, - val nostrEvent: at.torch.compose.database.model.NostrEvent? = null, + val nostrEvent: press.mantra.compose.database.model.NostrEvent? = null, ) : NostrIncomingMessage() data class EoseMessage( @@ -33,7 +33,7 @@ sealed class NostrIncomingMessage { data class EventsMessage( val subscriptionId: String, - val nostrEvents: List = emptyList(), + val nostrEvents: List = emptyList(), ) : NostrIncomingMessage() data class NegentropyMessage( @@ -49,11 +49,11 @@ sealed class NostrIncomingMessage { fun NostrIncomingMessage?.verifyOrThrow(subscriptionId: String) { if (this == null) { - throw _root_ide_package_.at.torch.compose.exceptions.NetworkException("No messages received.") + throw _root_ide_package_.press.mantra.compose.exceptions.NetworkException("No messages received.") } if (this is NostrIncomingMessage.NoticeMessage) { - throw _root_ide_package_.at.torch.compose.exceptions.NostrNoticeException( + throw _root_ide_package_.press.mantra.compose.exceptions.NostrNoticeException( reason = this.message, subscriptionId = subscriptionId, ) diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/network/sockets/NostrIncomingMessageExt.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/sockets/NostrIncomingMessageExt.kt similarity index 95% rename from composeApp/src/commonMain/kotlin/at/torch/compose/network/sockets/NostrIncomingMessageExt.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/network/sockets/NostrIncomingMessageExt.kt index b8c1f6ab..784ebbed 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/network/sockets/NostrIncomingMessageExt.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/sockets/NostrIncomingMessageExt.kt @@ -1,4 +1,4 @@ -package at.torch.compose.network.sockets +package press.mantra.compose.network.sockets import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.filter diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/network/sockets/NostrIncomingMessageParser.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/sockets/NostrIncomingMessageParser.kt similarity index 93% rename from composeApp/src/commonMain/kotlin/at/torch/compose/network/sockets/NostrIncomingMessageParser.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/network/sockets/NostrIncomingMessageParser.kt index dd0d5591..cf8532e7 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/network/sockets/NostrIncomingMessageParser.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/sockets/NostrIncomingMessageParser.kt @@ -1,6 +1,6 @@ -package at.torch.compose.network.sockets +package press.mantra.compose.network.sockets -import at.torch.compose.network.serialization.decodeFromStringOrNull +import press.mantra.compose.network.serialization.decodeFromStringOrNull import co.touchlab.kermit.Logger import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.core.Kind @@ -14,7 +14,7 @@ import kotlinx.serialization.json.jsonObject import kotlinx.serialization.json.jsonPrimitive fun String.parseIncomingMessage(): NostrIncomingMessage? { - val jsonArray = _root_ide_package_.at.torch.compose.network.serialization.SocketsJson.decodeFromStringOrNull(this) + val jsonArray = _root_ide_package_.press.mantra.compose.network.serialization.SocketsJson.decodeFromStringOrNull(this) val verbElement = jsonArray?.elementAtOrNull(0) ?: return null return try { @@ -74,7 +74,7 @@ private fun JsonArray.takeAsEventIncomingMessage(): NostrIncomingMessage? { if (subscriptionId == null || kind == null) return null - val nostrEvent = at.torch.compose.database.model.NostrEvent.fromEvent( + val nostrEvent = press.mantra.compose.database.model.NostrEvent.fromEvent( Event.fromJson( event.toString() ) @@ -92,10 +92,10 @@ private fun JsonArray.takeAsEventsIncomingMessage(): NostrIncomingMessage? { if (subscriptionId == null || events == null) return null - val nostrEvents = mutableListOf() + val nostrEvents = mutableListOf() events.map { it.jsonObject }.forEach { jsonEvent -> - at.torch.compose.database.model.NostrEvent.fromEvent( + press.mantra.compose.database.model.NostrEvent.fromEvent( Event.fromJson( jsonEvent.toString() ) diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/network/sockets/NostrOutgoingMessageBuilder.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/sockets/NostrOutgoingMessageBuilder.kt similarity index 96% rename from composeApp/src/commonMain/kotlin/at/torch/compose/network/sockets/NostrOutgoingMessageBuilder.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/network/sockets/NostrOutgoingMessageBuilder.kt index 36027aa1..1d50a46b 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/network/sockets/NostrOutgoingMessageBuilder.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/sockets/NostrOutgoingMessageBuilder.kt @@ -1,4 +1,4 @@ -package at.torch.compose.network.sockets +package press.mantra.compose.network.sockets import kotlinx.serialization.json.JsonObject import kotlinx.serialization.json.add diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/network/sockets/NostrSocketClient.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/sockets/NostrSocketClient.kt similarity index 94% rename from composeApp/src/commonMain/kotlin/at/torch/compose/network/sockets/NostrSocketClient.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/network/sockets/NostrSocketClient.kt index 420c1685..222a6a04 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/network/sockets/NostrSocketClient.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/sockets/NostrSocketClient.kt @@ -1,4 +1,4 @@ -package at.torch.compose.network.sockets +package press.mantra.compose.network.sockets import kotlinx.coroutines.flow.SharedFlow import kotlinx.serialization.json.JsonObject diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/network/sockets/NostrSocketClientFactory.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/sockets/NostrSocketClientFactory.kt similarity index 97% rename from composeApp/src/commonMain/kotlin/at/torch/compose/network/sockets/NostrSocketClientFactory.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/network/sockets/NostrSocketClientFactory.kt index 88cd6386..735d543b 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/network/sockets/NostrSocketClientFactory.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/sockets/NostrSocketClientFactory.kt @@ -1,4 +1,4 @@ -package at.torch.compose.network.sockets +package press.mantra.compose.network.sockets import io.ktor.client.HttpClient import io.ktor.client.plugins.websocket.WebSockets diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/network/sockets/NostrSocketClientImpl.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/sockets/NostrSocketClientImpl.kt similarity index 98% rename from composeApp/src/commonMain/kotlin/at/torch/compose/network/sockets/NostrSocketClientImpl.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/network/sockets/NostrSocketClientImpl.kt index b0d2354a..427ce103 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/network/sockets/NostrSocketClientImpl.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/sockets/NostrSocketClientImpl.kt @@ -1,4 +1,4 @@ -package at.torch.compose.network.sockets +package press.mantra.compose.network.sockets import co.touchlab.kermit.Logger import io.ktor.client.HttpClient @@ -82,7 +82,7 @@ internal class NostrSocketClientImpl( logger.w("NostrSocketClient::acquireWebSocketSession($socketUrl) failed.", error) close() onSocketConnectionClosed?.invoke(socketUrl, error) - throw _root_ide_package_.at.torch.compose.exceptions.NetworkException(cause = error) + throw _root_ide_package_.press.mantra.compose.exceptions.NetworkException(cause = error) } } diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/network/sockets/NostrVerb.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/sockets/NostrVerb.kt similarity index 95% rename from composeApp/src/commonMain/kotlin/at/torch/compose/network/sockets/NostrVerb.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/network/sockets/NostrVerb.kt index c8916b18..3946d9d1 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/network/sockets/NostrVerb.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/sockets/NostrVerb.kt @@ -1,4 +1,4 @@ -package at.torch.compose.network.sockets +package press.mantra.compose.network.sockets import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/network/sockets/SocketConnectionCallbacks.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/sockets/SocketConnectionCallbacks.kt similarity index 76% rename from composeApp/src/commonMain/kotlin/at/torch/compose/network/sockets/SocketConnectionCallbacks.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/network/sockets/SocketConnectionCallbacks.kt index 30d2320d..580da97b 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/network/sockets/SocketConnectionCallbacks.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/network/sockets/SocketConnectionCallbacks.kt @@ -1,4 +1,4 @@ -package at.torch.compose.network.sockets +package press.mantra.compose.network.sockets typealias SocketConnectionOpenedCallback = (url: String) -> Unit typealias SocketConnectionClosedCallback = (url: String, error: Throwable?) -> Unit diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/nostr/Relays.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/nostr/Relays.kt similarity index 98% rename from composeApp/src/commonMain/kotlin/at/torch/compose/nostr/Relays.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/nostr/Relays.kt index 0fed7409..7414b4e7 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/nostr/Relays.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/nostr/Relays.kt @@ -1,4 +1,4 @@ -package at.torch.compose.nostr +package press.mantra.compose.nostr import com.vitorpamplona.quartz.nip01Core.relay.normalizer.RelayUrlNormalizer import com.vitorpamplona.quartz.nip28PublicChat.list.tags.ChannelTag diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/repository/CachingImportRepository.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/repository/CachingImportRepository.kt new file mode 100644 index 00000000..99fac797 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/repository/CachingImportRepository.kt @@ -0,0 +1,40 @@ +package press.mantra.compose.repository + +/** + * As seen in Primal + * + * https://github.com/PrimalHQ/primal-android-app/blob/a7e32e2203555d27e60a749238175cd1ee0fa2af/domain/primal/src/commonMain/kotlin/net/primal/domain/global/CachingImportRepository.kt + * + */ +interface CachingImportRepository { + suspend fun cacheNostrEvents(vararg events: press.mantra.compose.database.model.NostrEvent) + suspend fun cacheNostrEvents(events: List) + + suspend fun importEvents(events: List): Boolean + suspend fun broadcastEvents(events: List, relays: List): Result> + + companion object { + val NO_OP_CACHING_IMPORT_REPOSITORY = object : CachingImportRepository { + override suspend fun cacheNostrEvents(vararg events: press.mantra.compose.database.model.NostrEvent) { + } + + override suspend fun cacheNostrEvents(events: List) { + + } + + override suspend fun importEvents(events: List): Boolean { + return true + } + + override suspend fun broadcastEvents( + events: List, + relays: List + ): Result> { + return Result.success( + emptyList() + ) + } + + } + } +} diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/repository/ChatRepository.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/repository/ChatRepository.kt similarity index 93% rename from composeApp/src/commonMain/kotlin/at/torch/compose/repository/ChatRepository.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/repository/ChatRepository.kt index 2ac194dc..aa4a4d05 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/repository/ChatRepository.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/repository/ChatRepository.kt @@ -1,11 +1,11 @@ -package at.torch.compose.repository +package press.mantra.compose.repository -import at.torch.compose.database.model.ChatRoom -import at.torch.compose.database.model.GiftWrapPayload -import at.torch.compose.database.model.MarmotKeyPackage -import at.torch.compose.database.model.Participant -import at.torch.compose.database.model.intermdiate.LocalChatMessage -import at.torch.compose.database.model.intermdiate.LocalChatRoom +import press.mantra.compose.database.model.ChatRoom +import press.mantra.compose.database.model.GiftWrapPayload +import press.mantra.compose.database.model.MarmotKeyPackage +import press.mantra.compose.database.model.Participant +import press.mantra.compose.database.model.intermdiate.LocalChatMessage +import press.mantra.compose.database.model.intermdiate.LocalChatRoom import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.core.Kind import com.vitorpamplona.quartz.nip01Core.signers.NostrSignerSync diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/repository/MarmotRepository.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/repository/MarmotRepository.kt similarity index 93% rename from composeApp/src/commonMain/kotlin/at/torch/compose/repository/MarmotRepository.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/repository/MarmotRepository.kt index 8cd62ff2..44deb99f 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/repository/MarmotRepository.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/repository/MarmotRepository.kt @@ -1,7 +1,7 @@ -package at.torch.compose.repository +package press.mantra.compose.repository -import at.torch.compose.database.model.MarmotInnerEvent -import at.torch.compose.database.model.MarmotKeyPackageBundle +import press.mantra.compose.database.model.MarmotInnerEvent +import press.mantra.compose.database.model.MarmotKeyPackageBundle import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.signers.NostrSignerSync import kotlinx.coroutines.flow.Flow diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/repository/NostrNotaryRepository.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/repository/NostrNotaryRepository.kt similarity index 67% rename from composeApp/src/commonMain/kotlin/at/torch/compose/repository/NostrNotaryRepository.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/repository/NostrNotaryRepository.kt index 227ac1e6..df3b7d43 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/repository/NostrNotaryRepository.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/repository/NostrNotaryRepository.kt @@ -1,7 +1,7 @@ -package at.torch.compose.repository +package press.mantra.compose.repository -import at.torch.compose.cryptography.signOrThrow -import at.torch.compose.network.asClientTag +import press.mantra.compose.cryptography.signOrThrow +import press.mantra.compose.network.asClientTag import com.vitorpamplona.quartz.nip19Bech32.toNsec import com.vitorpamplona.quartz.nip51Lists.relayLists.RelayFeedsListEvent import fr.acinq.phoenix.managers.WalletManager @@ -36,10 +36,10 @@ class NostrNotaryRepository( private val _responses = Channel() private fun setResponse(response: SignResult) = scope.launch { _responses.send(response) } - suspend fun signNostrEvent(unsignedNostrEvent: at.torch.compose.database.model.UnsignedNostrEvent): SignResult { + suspend fun signNostrEvent(unsignedNostrEvent: press.mantra.compose.database.model.UnsignedNostrEvent): SignResult { val result = try { signNostrEvent(publicKey = unsignedNostrEvent.pubKey, event = unsignedNostrEvent) - } catch (error: at.torch.compose.exceptions.SignatureException) { + } catch (error: press.mantra.compose.exceptions.SignatureException) { return SignResult.Rejected(error) } @@ -53,24 +53,24 @@ class NostrNotaryRepository( } } - fun verifySignature(nostrEvent: at.torch.compose.database.model.NostrEvent): Boolean { + fun verifySignature(nostrEvent: press.mantra.compose.database.model.NostrEvent): Boolean { throw NotImplementedError() } - fun onSuccess(nostrEvent: at.torch.compose.database.model.NostrEvent) { + fun onSuccess(nostrEvent: press.mantra.compose.database.model.NostrEvent) { setResponse(SignResult.Signed(nostrEvent)) } fun onFailure() { - setResponse(SignResult.Rejected(_root_ide_package_.at.torch.compose.exceptions.SigningRejectedException())) + setResponse(SignResult.Rejected(_root_ide_package_.press.mantra.compose.exceptions.SigningRejectedException())) } private fun findNsecOrThrow(activeUserPublicKey: String): String = runCatching { walletManager.keyManager.value?.nostrPrivateKey()?.value?.toByteArray()?.toNsec() - }.getOrNull() ?: throw _root_ide_package_.at.torch.compose.exceptions.SigningKeyNotFoundException() + }.getOrNull() ?: throw _root_ide_package_.press.mantra.compose.exceptions.SigningKeyNotFoundException() - private fun signNostrEvent(publicKey: String, event: at.torch.compose.database.model.UnsignedNostrEvent): at.torch.compose.database.model.NostrEvent { + private fun signNostrEvent(publicKey: String, event: press.mantra.compose.database.model.UnsignedNostrEvent): press.mantra.compose.database.model.NostrEvent { val isExternalSignerLogin = runCatching { // credentialsStore.isExternalSignerCredential(npub = publicKey.hexToNpubHrp()) false @@ -83,9 +83,9 @@ class NostrNotaryRepository( return event.signOrThrow(nsec = findNsecOrThrow(publicKey)) } - suspend fun signRelayListMetadata(userId: String, relays: List): SignResult { + suspend fun signRelayListMetadata(userId: String, relays: List): SignResult { return signNostrEvent( - unsignedNostrEvent = _root_ide_package_.at.torch.compose.database.model.UnsignedNostrEvent( + unsignedNostrEvent = _root_ide_package_.press.mantra.compose.database.model.UnsignedNostrEvent( pubKey = userId, content = "", kind = RelayFeedsListEvent.KIND, @@ -100,20 +100,20 @@ class NostrNotaryRepository( } ) } - .toTypedArray() + listOf(at.torch.compose.network.UserAgent.CLIENT_NAME.asClientTag()), + .toTypedArray() + listOf(press.mantra.compose.network.UserAgent.CLIENT_NAME.asClientTag()), ), ) } sealed class NotarySideEffect { - data class RequestSignature(val unsignedEvent: at.torch.compose.database.model.UnsignedNostrEvent) : NotarySideEffect() + data class RequestSignature(val unsignedEvent: press.mantra.compose.database.model.UnsignedNostrEvent) : NotarySideEffect() } sealed class SignResult { - data class Signed(val event: at.torch.compose.database.model.NostrEvent) : SignResult() - data class Rejected(val error: at.torch.compose.exceptions.SignatureException) : SignResult() + data class Signed(val event: press.mantra.compose.database.model.NostrEvent) : SignResult() + data class Rejected(val error: press.mantra.compose.exceptions.SignatureException) : SignResult() - fun unwrapOrThrow(onFailure: ((at.torch.compose.exceptions.SignatureException) -> Unit)? = null): at.torch.compose.database.model.NostrEvent = + fun unwrapOrThrow(onFailure: ((press.mantra.compose.exceptions.SignatureException) -> Unit)? = null): press.mantra.compose.database.model.NostrEvent = when (this) { is Rejected -> { onFailure?.invoke(this.error) @@ -125,7 +125,7 @@ class NostrNotaryRepository( } } - fun getOrNull(onFailure: ((at.torch.compose.exceptions.SignatureException) -> Unit)? = null): at.torch.compose.database.model.NostrEvent? = + fun getOrNull(onFailure: ((press.mantra.compose.exceptions.SignatureException) -> Unit)? = null): press.mantra.compose.database.model.NostrEvent? = when (this) { is Rejected -> { onFailure?.invoke(this.error) diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/repository/NostrPublisherRepository.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/repository/NostrPublisherRepository.kt similarity index 69% rename from composeApp/src/commonMain/kotlin/at/torch/compose/repository/NostrPublisherRepository.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/repository/NostrPublisherRepository.kt index 53e84579..ea0b63af 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/repository/NostrPublisherRepository.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/repository/NostrPublisherRepository.kt @@ -1,4 +1,4 @@ -package at.torch.compose.repository +package press.mantra.compose.repository import co.touchlab.kermit.Logger import kotlinx.coroutines.CoroutineScope @@ -13,14 +13,14 @@ import kotlinx.coroutines.launch * https://github.com/PrimalHQ/primal-android-app/blob/ec22916b4e3472a20bade82d53957a7ef9b708b0/app/src/main/kotlin/net/primal/android/nostr/publish/NostrPublisher.kt#L20 */ class NostrPublisherRepository( - private val relaysSocketManager: at.torch.compose.network.relays.RelaysSocketManager, + private val relaysSocketManager: press.mantra.compose.network.relays.RelaysSocketManager, private val nostrNotary: NostrNotaryRepository, private val cachingImportRepository: CachingImportRepository, ) { val logger = Logger.withTag("NostrPublisherRepository") private val scope = CoroutineScope(SupervisorJob() + Dispatchers.IO) - private fun importEvent(event: at.torch.compose.database.model.NostrEvent) { + private fun importEvent(event: press.mantra.compose.database.model.NostrEvent) { scope.launch { runCatching { cachingImportRepository.importEvents(events = listOf(event)) @@ -30,8 +30,8 @@ class NostrPublisherRepository( } } - @Throws(at.torch.compose.exceptions.NostrPublishException::class) - private suspend fun publishAndImportEvent(signedNostrEvent: at.torch.compose.database.model.NostrEvent, outboxRelays: List = emptyList()) { + @Throws(press.mantra.compose.exceptions.NostrPublishException::class) + private suspend fun publishAndImportEvent(signedNostrEvent: press.mantra.compose.database.model.NostrEvent, outboxRelays: List = emptyList()) { relaysSocketManager.publishEvent(signedNostrEvent) importEvent(signedNostrEvent) if (outboxRelays.isNotEmpty()) { @@ -39,7 +39,7 @@ class NostrPublisherRepository( relaysSocketManager.publishEvent( nostrEvent = signedNostrEvent, relays = outboxRelays.map { - _root_ide_package_.at.torch.compose.network.dto.RelayDTO( + _root_ide_package_.press.mantra.compose.network.dto.RelayDTO( url = it, read = false, write = true @@ -52,19 +52,19 @@ class NostrPublisherRepository( } } - @Throws(at.torch.compose.exceptions.NostrPublishException::class, at.torch.compose.exceptions.SignatureException::class) + @Throws(press.mantra.compose.exceptions.NostrPublishException::class, press.mantra.compose.exceptions.SignatureException::class) suspend fun signPublishImportNostrEvent( - unsignedNostrEvent: at.torch.compose.database.model.UnsignedNostrEvent, + unsignedNostrEvent: press.mantra.compose.database.model.UnsignedNostrEvent, outboxRelays: List, - ): at.torch.compose.database.model.NostrEvent { + ): press.mantra.compose.database.model.NostrEvent { val signedNostrEvent = nostrNotary.signNostrEvent(unsignedNostrEvent = unsignedNostrEvent).unwrapOrThrow() publishAndImportEvent(signedNostrEvent = signedNostrEvent, outboxRelays = outboxRelays) return signedNostrEvent } - @Throws(at.torch.compose.exceptions.NostrPublishException::class, at.torch.compose.exceptions.SignatureException::class) - suspend fun publishRelayList(userId: String, relays: List): at.torch.compose.database.model.NostrEvent { + @Throws(press.mantra.compose.exceptions.NostrPublishException::class, press.mantra.compose.exceptions.SignatureException::class) + suspend fun publishRelayList(userId: String, relays: List): press.mantra.compose.database.model.NostrEvent { val signedNostrEvent = nostrNotary.signRelayListMetadata(userId = userId, relays = relays).unwrapOrThrow() relaysSocketManager.publishEvent(nostrEvent = signedNostrEvent, relays = relays.toSet()) importEvent(signedNostrEvent) diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/repository/NostrRepository.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/repository/NostrRepository.kt similarity index 89% rename from composeApp/src/commonMain/kotlin/at/torch/compose/repository/NostrRepository.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/repository/NostrRepository.kt index 7cdce49e..22026ecf 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/repository/NostrRepository.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/repository/NostrRepository.kt @@ -1,21 +1,21 @@ -package at.torch.compose.repository +package press.mantra.compose.repository -import at.torch.compose.database.model.BroadcastNostrEventReceipt -import at.torch.compose.database.model.BroadcastNostrEventRequest -import at.torch.compose.database.model.Connection -import at.torch.compose.database.model.NegentropySynchronizeRequest -import at.torch.compose.database.model.NostrEvent -import at.torch.compose.database.model.Profile -import at.torch.compose.database.model.RecentSearch -import at.torch.compose.database.model.SynchronizeNostrEventRequest -import at.torch.compose.database.model.UnsignedNostrEvent -import at.torch.compose.database.model.intermdiate.LocalAccount -import at.torch.compose.database.model.intermdiate.LocalBroadcastNostrEventRequest -import at.torch.compose.database.model.intermdiate.LocalNostrEvent -import at.torch.compose.database.model.intermdiate.LocalProfile -import at.torch.compose.database.model.intermdiate.LocalProfileWithFollowers -import at.torch.compose.database.model.intermdiate.LocalProfileWithFollowing -import at.torch.compose.database.model.types.SynchronizationFilter +import press.mantra.compose.database.model.BroadcastNostrEventReceipt +import press.mantra.compose.database.model.BroadcastNostrEventRequest +import press.mantra.compose.database.model.Connection +import press.mantra.compose.database.model.NegentropySynchronizeRequest +import press.mantra.compose.database.model.NostrEvent +import press.mantra.compose.database.model.Profile +import press.mantra.compose.database.model.RecentSearch +import press.mantra.compose.database.model.SynchronizeNostrEventRequest +import press.mantra.compose.database.model.UnsignedNostrEvent +import press.mantra.compose.database.model.intermdiate.LocalAccount +import press.mantra.compose.database.model.intermdiate.LocalBroadcastNostrEventRequest +import press.mantra.compose.database.model.intermdiate.LocalNostrEvent +import press.mantra.compose.database.model.intermdiate.LocalProfile +import press.mantra.compose.database.model.intermdiate.LocalProfileWithFollowers +import press.mantra.compose.database.model.intermdiate.LocalProfileWithFollowing +import press.mantra.compose.database.model.types.SynchronizationFilter import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.core.Kind import com.vitorpamplona.quartz.nip01Core.crypto.KeyPair @@ -138,7 +138,7 @@ interface NostrRepository { suspend fun removeRecentSearch(recentSearch: RecentSearch) - suspend fun saveSearchQuery(query: String, synchronizationFilterArray: at.torch.compose.database.model.typealiases.SynchronizationFilterArray? = null) + suspend fun saveSearchQuery(query: String, synchronizationFilterArray: press.mantra.compose.database.model.typealiases.SynchronizationFilterArray? = null) suspend fun rescheduleBroadcastNostrEventRequests(broadcastNostrEventRequests: List) @@ -332,7 +332,7 @@ interface NostrRepository { override suspend fun saveSearchQuery( query: String, - synchronizationFilterArray: at.torch.compose.database.model.typealiases.SynchronizationFilterArray? + synchronizationFilterArray: press.mantra.compose.database.model.typealiases.SynchronizationFilterArray? ) { TODO("Not yet implemented") } diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/repository/PostRepository.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/repository/PostRepository.kt new file mode 100644 index 00000000..0b32c597 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/repository/PostRepository.kt @@ -0,0 +1,3 @@ +package press.mantra.compose.repository + +interface PostRepository \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/repository/RelayRepository.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/repository/RelayRepository.kt similarity index 59% rename from composeApp/src/commonMain/kotlin/at/torch/compose/repository/RelayRepository.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/repository/RelayRepository.kt index f389e277..873e72bc 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/repository/RelayRepository.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/repository/RelayRepository.kt @@ -1,7 +1,7 @@ -package at.torch.compose.repository +package press.mantra.compose.repository import kotlinx.coroutines.flow.Flow interface RelayRepository { - suspend fun observePublicKeyRelays(publicKey: String): Flow> + suspend fun observePublicKeyRelays(publicKey: String): Flow> } \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/repository/SearchRepository.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/repository/SearchRepository.kt similarity index 55% rename from composeApp/src/commonMain/kotlin/at/torch/compose/repository/SearchRepository.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/repository/SearchRepository.kt index a27a3315..71aeb2b3 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/repository/SearchRepository.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/repository/SearchRepository.kt @@ -1,14 +1,14 @@ -package at.torch.compose.repository +package press.mantra.compose.repository interface SearchRepository { suspend fun submitSearch( - synchronizeNostrEventRequests: List, + synchronizeNostrEventRequests: List, ) companion object { val NO_OP_SEARCH_REPOSITORY = object: SearchRepository { - override suspend fun submitSearch(synchronizeNostrEventRequests: List) { + override suspend fun submitSearch(synchronizeNostrEventRequests: List) { TODO("Not yet implemented") } } diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/BlurHashDecoder.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/BlurHashDecoder.kt similarity index 99% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/BlurHashDecoder.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/BlurHashDecoder.kt index c3f5d6fd..5024ad47 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/BlurHashDecoder.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/BlurHashDecoder.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui +package press.mantra.compose.ui import coil3.Bitmap import kotlin.math.pow diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/ActiveProfileScreen.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/ActiveProfileScreen.kt similarity index 93% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/ActiveProfileScreen.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/ActiveProfileScreen.kt index a3315fd4..1d86dbbd 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/ActiveProfileScreen.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/ActiveProfileScreen.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable +package press.mantra.compose.ui.composable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -19,8 +19,6 @@ import androidx.compose.material.icons.filled.ImportExport import androidx.compose.material.icons.filled.Key import androidx.compose.material.icons.filled.Logout import androidx.compose.material.icons.filled.QrCode -import androidx.compose.material.icons.filled.SwitchVideo -import androidx.compose.material.icons.filled.Widgets import androidx.compose.material3.Button import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi @@ -39,18 +37,18 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel -import at.torch.compose.database.model.NostrEvent -import at.torch.compose.database.model.intermdiate.LocalNostrEvent -import at.torch.compose.extensions.hexToNpubHrp -import at.torch.compose.repository.NostrRepository -import at.torch.compose.ui.composable.navigation.routes.ImplementationPendingRoute -import at.torch.compose.ui.composable.navigation.routes.KeyPackageManagementRoute -import at.torch.compose.ui.composable.navigation.routes.Route -import at.torch.compose.ui.composable.navigation.routes.ShareProfileRoute -import at.torch.compose.ui.composable.widgets.LoadingDataIndicator -import at.torch.compose.ui.composable.widgets.profile.ProfileAvatar -import at.torch.compose.ui.view.model.ActiveProfileViewModel -import at.torch.compose.ui.view.state.ActiveProfileUIState +import press.mantra.compose.database.model.NostrEvent +import press.mantra.compose.database.model.intermdiate.LocalNostrEvent +import press.mantra.compose.extensions.hexToNpubHrp +import press.mantra.compose.repository.NostrRepository +import press.mantra.compose.ui.composable.navigation.routes.ImplementationPendingRoute +import press.mantra.compose.ui.composable.navigation.routes.KeyPackageManagementRoute +import press.mantra.compose.ui.composable.navigation.routes.Route +import press.mantra.compose.ui.composable.navigation.routes.ShareProfileRoute +import press.mantra.compose.ui.composable.widgets.LoadingDataIndicator +import press.mantra.compose.ui.composable.widgets.profile.ProfileAvatar +import press.mantra.compose.ui.view.model.ActiveProfileViewModel +import press.mantra.compose.ui.view.state.ActiveProfileUIState import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.metadata.MetadataEvent @@ -362,7 +360,7 @@ fun ActiveProfileScreen( @Preview @Composable private fun UnannouncedProfileScreenPreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + _root_ide_package_.press.mantra.compose.ui.theme.TorchTheme { Surface( modifier = Modifier.fillMaxSize() ) { @@ -381,7 +379,7 @@ It has survived not only five centuries, but also the leap into electronic types sig = "", kind = MetadataEvent.KIND ), - profile = _root_ide_package_.at.torch.compose.database.model.Profile( + profile = _root_ide_package_.press.mantra.compose.database.model.Profile( publicKey = "84dee6e676e5bb67b4ad4e042cf70cbd8681155db535942fcc6a0533858a7240", displayName = "John Doe", nostrEventId = "nostrEventId", diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/AddMemberToChatRoomConfirmationScreen.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/AddMemberToChatRoomConfirmationScreen.kt similarity index 93% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/AddMemberToChatRoomConfirmationScreen.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/AddMemberToChatRoomConfirmationScreen.kt index bb243963..4ad91099 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/AddMemberToChatRoomConfirmationScreen.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/AddMemberToChatRoomConfirmationScreen.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable +package press.mantra.compose.ui.composable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -26,17 +26,16 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel -import at.torch.compose.database.model.ChatRoom -import at.torch.compose.database.model.MarmotKeyPackage -import at.torch.compose.database.model.Profile -import at.torch.compose.database.model.intermdiate.LocalChatRoom -import at.torch.compose.repository.ChatRepository -import at.torch.compose.repository.NostrRepository -import at.torch.compose.ui.composable.navigation.routes.Route -import at.torch.compose.ui.composable.widgets.LoadingDataIndicator -import at.torch.compose.ui.theme.TorchTheme -import at.torch.compose.ui.view.model.AddMemberToChatRoomConfirmationViewModel -import at.torch.compose.ui.view.state.AddMemberToChatRoomConfirmationUIState +import press.mantra.compose.database.model.ChatRoom +import press.mantra.compose.database.model.MarmotKeyPackage +import press.mantra.compose.database.model.Profile +import press.mantra.compose.database.model.intermdiate.LocalChatRoom +import press.mantra.compose.repository.ChatRepository +import press.mantra.compose.repository.NostrRepository +import press.mantra.compose.ui.composable.widgets.LoadingDataIndicator +import press.mantra.compose.ui.theme.TorchTheme +import press.mantra.compose.ui.view.model.AddMemberToChatRoomConfirmationViewModel +import press.mantra.compose.ui.view.state.AddMemberToChatRoomConfirmationUIState import com.vitorpamplona.quartz.nip01Core.core.HexKey @OptIn(ExperimentalMaterial3ExpressiveApi::class, ExperimentalMaterial3Api::class) diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/ChatRoomCreationScreen.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/ChatRoomCreationScreen.kt similarity index 95% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/ChatRoomCreationScreen.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/ChatRoomCreationScreen.kt index 3b7e89ee..3b3f994c 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/ChatRoomCreationScreen.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/ChatRoomCreationScreen.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable +package press.mantra.compose.ui.composable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -25,10 +25,10 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel -import at.torch.compose.repository.ChatRepository -import at.torch.compose.repository.NostrRepository -import at.torch.compose.ui.composable.navigation.routes.Route -import at.torch.compose.ui.view.model.ChatRoomCreationViewModel +import press.mantra.compose.repository.ChatRepository +import press.mantra.compose.repository.NostrRepository +import press.mantra.compose.ui.composable.navigation.routes.Route +import press.mantra.compose.ui.view.model.ChatRoomCreationViewModel import fr.acinq.phoenix.data.ActiveWallet import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow @@ -167,7 +167,7 @@ fun ChatRoomCreationScreen( @Preview @Composable private fun LoadingScreenPreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + _root_ide_package_.press.mantra.compose.ui.theme.TorchTheme { Surface( modifier = Modifier.fillMaxSize() ) { diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/ChatRoomDetailScreen.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/ChatRoomDetailScreen.kt similarity index 93% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/ChatRoomDetailScreen.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/ChatRoomDetailScreen.kt index c56667cd..36489477 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/ChatRoomDetailScreen.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/ChatRoomDetailScreen.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable +package press.mantra.compose.ui.composable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -36,21 +36,21 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel -import at.torch.compose.database.model.ChatRoom -import at.torch.compose.database.model.Participant -import at.torch.compose.database.model.Profile -import at.torch.compose.database.model.intermdiate.LocalChatRoom -import at.torch.compose.database.model.intermdiate.LocalParticipant -import at.torch.compose.repository.ChatRepository -import at.torch.compose.repository.NostrRepository -import at.torch.compose.ui.composable.navigation.routes.ImplementationPendingRoute -import at.torch.compose.ui.composable.navigation.routes.Route -import at.torch.compose.ui.composable.navigation.routes.SearchMemberToAddToChatRoomRoute -import at.torch.compose.ui.composable.widgets.LoadingDataIndicator -import at.torch.compose.ui.composable.widgets.profile.ProfileAvatar -import at.torch.compose.ui.theme.TorchTheme -import at.torch.compose.ui.view.model.ChatRoomDetailViewModel -import at.torch.compose.ui.view.state.ChatRoomDetailUIState +import press.mantra.compose.database.model.ChatRoom +import press.mantra.compose.database.model.Participant +import press.mantra.compose.database.model.Profile +import press.mantra.compose.database.model.intermdiate.LocalChatRoom +import press.mantra.compose.database.model.intermdiate.LocalParticipant +import press.mantra.compose.repository.ChatRepository +import press.mantra.compose.repository.NostrRepository +import press.mantra.compose.ui.composable.navigation.routes.ImplementationPendingRoute +import press.mantra.compose.ui.composable.navigation.routes.Route +import press.mantra.compose.ui.composable.navigation.routes.SearchMemberToAddToChatRoomRoute +import press.mantra.compose.ui.composable.widgets.LoadingDataIndicator +import press.mantra.compose.ui.composable.widgets.profile.ProfileAvatar +import press.mantra.compose.ui.theme.TorchTheme +import press.mantra.compose.ui.view.model.ChatRoomDetailViewModel +import press.mantra.compose.ui.view.state.ChatRoomDetailUIState import com.vitorpamplona.quartz.nip01Core.core.HexKey @OptIn(ExperimentalMaterial3ExpressiveApi::class, ExperimentalMaterial3Api::class) diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/ChatRoomMessagingScreen.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/ChatRoomMessagingScreen.kt similarity index 93% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/ChatRoomMessagingScreen.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/ChatRoomMessagingScreen.kt index 5f4c29c7..6dceca7f 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/ChatRoomMessagingScreen.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/ChatRoomMessagingScreen.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable +package press.mantra.compose.ui.composable import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement @@ -15,7 +15,6 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.Send import androidx.compose.material.icons.filled.Mic import androidx.compose.material.icons.filled.MoreVert -import androidx.compose.material.icons.filled.Send import androidx.compose.material3.BottomAppBarDefaults import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi @@ -38,16 +37,16 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel -import at.torch.compose.database.model.ChatRoom -import at.torch.compose.database.model.intermdiate.LocalChatRoom -import at.torch.compose.repository.ChatRepository -import at.torch.compose.repository.NostrRepository -import at.torch.compose.ui.composable.navigation.routes.ChatRoomDetailRoute -import at.torch.compose.ui.composable.navigation.routes.Route -import at.torch.compose.ui.composable.widgets.LoadingDataIndicator -import at.torch.compose.ui.theme.TorchTheme -import at.torch.compose.ui.view.model.ChatRoomMessagingViewModel -import at.torch.compose.ui.view.state.ChatRoomMessagingUIState +import press.mantra.compose.database.model.ChatRoom +import press.mantra.compose.database.model.intermdiate.LocalChatRoom +import press.mantra.compose.repository.ChatRepository +import press.mantra.compose.repository.NostrRepository +import press.mantra.compose.ui.composable.navigation.routes.ChatRoomDetailRoute +import press.mantra.compose.ui.composable.navigation.routes.Route +import press.mantra.compose.ui.composable.widgets.LoadingDataIndicator +import press.mantra.compose.ui.theme.TorchTheme +import press.mantra.compose.ui.view.model.ChatRoomMessagingViewModel +import press.mantra.compose.ui.view.state.ChatRoomMessagingUIState import com.vitorpamplona.quartz.nip01Core.core.HexKey @OptIn(ExperimentalMaterial3ExpressiveApi::class, ExperimentalMaterial3Api::class) @@ -90,8 +89,8 @@ fun ChatRoomMessagingScreen( is ChatRoomMessagingUIState.Loaded -> { val textFieldState = rememberTextFieldState() - val chatMessageListViewModel: at.torch.compose.ui.view.model.ChatMessageListViewModel = viewModel( - factory = at.torch.compose.ui.view.model.ChatMessageListViewModel.factory( + val chatMessageListViewModel: press.mantra.compose.ui.view.model.ChatMessageListViewModel = viewModel( + factory = press.mantra.compose.ui.view.model.ChatMessageListViewModel.factory( localChatRoom = chatRoomDetailUIState.localChatRoom, nostrRepository = nostrRepository, chatRepository = chatRepository diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/CreateProfileScreen.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/CreateProfileScreen.kt similarity index 95% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/CreateProfileScreen.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/CreateProfileScreen.kt index 82221a4f..c03f7da5 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/CreateProfileScreen.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/CreateProfileScreen.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable +package press.mantra.compose.ui.composable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -31,16 +31,16 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel -import at.torch.compose.repository.MarmotRepository -import at.torch.compose.ui.view.model.CreateProfileViewModel -import at.torch.compose.ui.view.state.CreateProfileUIState +import press.mantra.compose.repository.MarmotRepository +import press.mantra.compose.ui.view.model.CreateProfileViewModel +import press.mantra.compose.ui.view.state.CreateProfileUIState @OptIn(ExperimentalMaterial3ExpressiveApi::class) @Composable fun CreateProfileScreen( initialCreateProfileUIState: CreateProfileUIState = CreateProfileUIState.Declaration, onNavigateToEndThis: () -> Unit, - nostrRepository: at.torch.compose.repository.NostrRepository, + nostrRepository: press.mantra.compose.repository.NostrRepository, marmotRepository: MarmotRepository, writeSeed: (List) -> Unit ) { @@ -308,7 +308,7 @@ fun CreateProfileScreen( Button( colors = ButtonDefaults.buttonColors( - containerColor = _root_ide_package_.at.torch.compose.ui.theme.RedPill, + containerColor = _root_ide_package_.press.mantra.compose.ui.theme.RedPill, contentColor = Color.White ), onClick = { @@ -326,7 +326,7 @@ fun CreateProfileScreen( Button( colors = ButtonDefaults.buttonColors( - containerColor = _root_ide_package_.at.torch.compose.ui.theme.BluePill, + containerColor = _root_ide_package_.press.mantra.compose.ui.theme.BluePill, contentColor = Color.DarkGray ), onClick = { @@ -353,7 +353,7 @@ fun CreateProfileScreen( @Preview @Composable fun CreateAccountScreenPreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + _root_ide_package_.press.mantra.compose.ui.theme.TorchTheme { Surface( modifier = Modifier.fillMaxSize() ) { @@ -386,8 +386,8 @@ fun CreateAccountScreenPreview() { // name = "Alan Turing", // bio = "Polyglot: Math... is my middle name, computer scientist. cryptographer, and gold hider." // ), -// _root_ide_package_.at.torch.compose.ui.view.state.CreateProfileUIState.ProfileReady( -// profile = _root_ide_package_.at.torch.compose.database.model.Profile( +// _root_ide_package_.press.mantra.compose.ui.view.state.CreateProfileUIState.ProfileReady( +// profile = _root_ide_package_.press.mantra.compose.database.model.Profile( // publicKey = "", // nostrEventId = "", // displayName = "Alan Turing", @@ -396,7 +396,7 @@ fun CreateAccountScreenPreview() { // ), onNavigateToEndThis = {}, writeSeed = {}, - nostrRepository = at.torch.compose.repository.NostrRepository.NO_OP_NOSTR_REPOSITORY, + nostrRepository = press.mantra.compose.repository.NostrRepository.NO_OP_NOSTR_REPOSITORY, marmotRepository = MarmotRepository.NO_OP_MARMOT_KEY_PACKAGE_BUNDLE ) } diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/HomeScreen.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/HomeScreen.kt similarity index 91% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/HomeScreen.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/HomeScreen.kt index eb41afa1..eb6c84d2 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/HomeScreen.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/HomeScreen.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable +package press.mantra.compose.ui.composable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -37,22 +37,22 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel -import at.torch.compose.database.model.NostrEvent -import at.torch.compose.database.model.Profile -import at.torch.compose.database.model.intermdiate.LocalProfileWithFollowing -import at.torch.compose.repository.ChatRepository -import at.torch.compose.repository.NostrRepository -import at.torch.compose.ui.composable.navigation.routes.ActiveProfileRoute -import at.torch.compose.ui.composable.navigation.routes.Route -import at.torch.compose.ui.composable.widgets.LoadingDataIndicator -import at.torch.compose.ui.composable.widgets.dialogs.NewChatBottomSheetDialog -import at.torch.compose.ui.composable.widgets.dialogs.StartDirectMessageToNpubOrNip05Dialog -import at.torch.compose.ui.composable.widgets.profile.ProfileAvatar -import at.torch.compose.ui.theme.TorchTheme -import at.torch.compose.ui.view.model.ChatRoomListViewModel -import at.torch.compose.ui.view.model.HomeScreenType -import at.torch.compose.ui.view.model.HomeViewModel -import at.torch.compose.ui.view.state.HomeScreenUIState +import press.mantra.compose.database.model.NostrEvent +import press.mantra.compose.database.model.Profile +import press.mantra.compose.database.model.intermdiate.LocalProfileWithFollowing +import press.mantra.compose.repository.ChatRepository +import press.mantra.compose.repository.NostrRepository +import press.mantra.compose.ui.composable.navigation.routes.ActiveProfileRoute +import press.mantra.compose.ui.composable.navigation.routes.Route +import press.mantra.compose.ui.composable.widgets.LoadingDataIndicator +import press.mantra.compose.ui.composable.widgets.dialogs.NewChatBottomSheetDialog +import press.mantra.compose.ui.composable.widgets.dialogs.StartDirectMessageToNpubOrNip05Dialog +import press.mantra.compose.ui.composable.widgets.profile.ProfileAvatar +import press.mantra.compose.ui.theme.TorchTheme +import press.mantra.compose.ui.view.model.ChatRoomListViewModel +import press.mantra.compose.ui.view.model.HomeScreenType +import press.mantra.compose.ui.view.model.HomeViewModel +import press.mantra.compose.ui.view.state.HomeScreenUIState import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip10Notes.TextNoteEvent import kotlinx.coroutines.launch @@ -206,7 +206,7 @@ fun HomeScreen( val chatRoomListViewModel: ChatRoomListViewModel = viewModel( key = homeScreenTypeType.name, factory = ChatRoomListViewModel.factory( - initialChatRoomListUIState = at.torch.compose.ui.view.state.ChatRoomListUIState.Loading, + initialChatRoomListUIState = press.mantra.compose.ui.view.state.ChatRoomListUIState.Loading, publicKey = homeScreenUIState.profileWithFollowing.profile.publicKey, nostrRepository = nostrRepository, chatRepository = chatRepository diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/ImplementationPendingScreen.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/ImplementationPendingScreen.kt similarity index 92% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/ImplementationPendingScreen.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/ImplementationPendingScreen.kt index fad756d6..f895b7ad 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/ImplementationPendingScreen.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/ImplementationPendingScreen.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable +package press.mantra.compose.ui.composable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -39,7 +39,7 @@ fun ImplementationPendingScreen( @Preview @Composable private fun ImplementationPendingScreenPreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + _root_ide_package_.press.mantra.compose.ui.theme.TorchTheme { Surface( modifier = Modifier.padding(20.dp) ) { diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/KeyPackageManagementScreen.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/KeyPackageManagementScreen.kt similarity index 86% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/KeyPackageManagementScreen.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/KeyPackageManagementScreen.kt index cc71db54..d2d812ae 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/KeyPackageManagementScreen.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/KeyPackageManagementScreen.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable +package press.mantra.compose.ui.composable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -6,26 +6,15 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ArrowBack -import androidx.compose.material.icons.filled.Bento import androidx.compose.material.icons.filled.DoneAll -import androidx.compose.material.icons.filled.Edit -import androidx.compose.material.icons.filled.Hub -import androidx.compose.material.icons.filled.ImportExport -import androidx.compose.material.icons.filled.Key import androidx.compose.material.icons.filled.LockReset -import androidx.compose.material.icons.filled.Logout -import androidx.compose.material.icons.filled.PrivateConnectivity -import androidx.compose.material.icons.filled.Publish -import androidx.compose.material.icons.filled.QrCode import androidx.compose.material.icons.filled.Unpublished -import androidx.compose.material.icons.filled.Verified import androidx.compose.material.icons.filled.VerifiedUser import androidx.compose.material3.Button import androidx.compose.material3.Card @@ -38,31 +27,22 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface import androidx.compose.material3.Text -import androidx.compose.material3.TextButton import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable -import androidx.compose.runtime.LaunchedEffect import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel -import at.torch.compose.database.model.MarmotKeyPackageBundle -import at.torch.compose.extensions.hexToNpubHrp -import at.torch.compose.extensions.toFormattedTimeAndDateString -import at.torch.compose.repository.MarmotRepository -import at.torch.compose.repository.NostrRepository -import at.torch.compose.ui.composable.navigation.routes.ImplementationPendingRoute -import at.torch.compose.ui.composable.navigation.routes.Route -import at.torch.compose.ui.composable.navigation.routes.ShareProfileRoute -import at.torch.compose.ui.composable.widgets.LoadingDataIndicator -import at.torch.compose.ui.composable.widgets.profile.ProfileAvatar -import at.torch.compose.ui.view.model.KeyPackageManagementViewModel -import at.torch.compose.ui.view.state.KeyPackageManagementUIState -import com.vitorpamplona.quartz.marmot.mls.messages.MlsKeyPackage +import press.mantra.compose.database.model.MarmotKeyPackageBundle +import press.mantra.compose.extensions.toFormattedTimeAndDateString +import press.mantra.compose.repository.MarmotRepository +import press.mantra.compose.ui.composable.navigation.routes.Route +import press.mantra.compose.ui.composable.widgets.LoadingDataIndicator +import press.mantra.compose.ui.view.model.KeyPackageManagementViewModel +import press.mantra.compose.ui.view.state.KeyPackageManagementUIState import com.vitorpamplona.quartz.nip01Core.core.HexKey -import fr.acinq.phoenix.preferredAmountUnit @OptIn(ExperimentalMaterial3ExpressiveApi::class, ExperimentalMaterial3Api::class) @Composable @@ -241,7 +221,7 @@ fun KeyPackageManagementScreen( @Preview @Composable private fun UnannouncedProfileScreenPreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + _root_ide_package_.press.mantra.compose.ui.theme.TorchTheme { Surface( modifier = Modifier.fillMaxSize() ) { diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/LandingScreen.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/LandingScreen.kt similarity index 96% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/LandingScreen.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/LandingScreen.kt index cbe81443..844c77ea 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/LandingScreen.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/LandingScreen.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable +package press.mantra.compose.ui.composable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -101,7 +101,7 @@ fun LandingScreen( @Preview @Composable private fun LandingScreenPreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + _root_ide_package_.press.mantra.compose.ui.theme.TorchTheme { Surface( modifier = Modifier.fillMaxSize() ) { diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/LoadingScreen.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/LoadingScreen.kt similarity index 80% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/LoadingScreen.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/LoadingScreen.kt index b365539b..956de97d 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/LoadingScreen.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/LoadingScreen.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable +package press.mantra.compose.ui.composable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize @@ -17,7 +17,7 @@ fun LoadingScreen( Column( modifier = Modifier.padding(innerPadding) ) { - _root_ide_package_.at.torch.compose.ui.composable.widgets.LoadingDataIndicator( + _root_ide_package_.press.mantra.compose.ui.composable.widgets.LoadingDataIndicator( text = text ) } @@ -27,7 +27,7 @@ fun LoadingScreen( @Preview @Composable private fun LoadingScreenPreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + _root_ide_package_.press.mantra.compose.ui.theme.TorchTheme { Surface( modifier = Modifier.fillMaxSize() ) { diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/NostrEventDetailScreen.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/NostrEventDetailScreen.kt similarity index 90% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/NostrEventDetailScreen.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/NostrEventDetailScreen.kt index d92c3ec9..68607acf 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/NostrEventDetailScreen.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/NostrEventDetailScreen.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable +package press.mantra.compose.ui.composable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -15,17 +15,17 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel -import at.torch.compose.database.model.NostrEvent -import at.torch.compose.database.model.Profile -import at.torch.compose.database.model.intermdiate.LocalNostrEvent -import at.torch.compose.repository.NostrRepository -import at.torch.compose.ui.composable.navigation.routes.Route -import at.torch.compose.ui.composable.widgets.LoadingDataIndicator -import at.torch.compose.ui.composable.widgets.detail.MetadataEventDetail -import at.torch.compose.ui.composable.widgets.detail.TextNoteEventDetail -import at.torch.compose.ui.theme.TorchTheme -import at.torch.compose.ui.view.model.NostrEventDetailViewModel -import at.torch.compose.ui.view.state.NostrEventDetailUIState +import press.mantra.compose.database.model.NostrEvent +import press.mantra.compose.database.model.Profile +import press.mantra.compose.database.model.intermdiate.LocalNostrEvent +import press.mantra.compose.repository.NostrRepository +import press.mantra.compose.ui.composable.navigation.routes.Route +import press.mantra.compose.ui.composable.widgets.LoadingDataIndicator +import press.mantra.compose.ui.composable.widgets.detail.MetadataEventDetail +import press.mantra.compose.ui.composable.widgets.detail.TextNoteEventDetail +import press.mantra.compose.ui.theme.TorchTheme +import press.mantra.compose.ui.view.model.NostrEventDetailViewModel +import press.mantra.compose.ui.view.state.NostrEventDetailUIState import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.metadata.MetadataEvent import com.vitorpamplona.quartz.nip10Notes.TextNoteEvent diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/SearchMemberToAddToChatRoomScreen.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/SearchMemberToAddToChatRoomScreen.kt similarity index 92% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/SearchMemberToAddToChatRoomScreen.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/SearchMemberToAddToChatRoomScreen.kt index 86a0666b..0c9fc6d0 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/SearchMemberToAddToChatRoomScreen.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/SearchMemberToAddToChatRoomScreen.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable +package press.mantra.compose.ui.composable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -27,18 +27,18 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel -import at.torch.compose.database.model.ChatRoom -import at.torch.compose.database.model.Profile -import at.torch.compose.database.model.intermdiate.LocalChatRoom -import at.torch.compose.repository.ChatRepository -import at.torch.compose.repository.NostrRepository -import at.torch.compose.ui.composable.navigation.routes.AddMemberToChatRoomConfirmationRoute -import at.torch.compose.ui.composable.navigation.routes.Route -import at.torch.compose.ui.composable.widgets.LoadingDataIndicator -import at.torch.compose.ui.composable.widgets.profile.ProfileAvatar -import at.torch.compose.ui.theme.TorchTheme -import at.torch.compose.ui.view.model.SearchMemberToAddToChatRoomViewModel -import at.torch.compose.ui.view.state.SearchMemberToAddToChatRoomUIState +import press.mantra.compose.database.model.ChatRoom +import press.mantra.compose.database.model.Profile +import press.mantra.compose.database.model.intermdiate.LocalChatRoom +import press.mantra.compose.repository.ChatRepository +import press.mantra.compose.repository.NostrRepository +import press.mantra.compose.ui.composable.navigation.routes.AddMemberToChatRoomConfirmationRoute +import press.mantra.compose.ui.composable.navigation.routes.Route +import press.mantra.compose.ui.composable.widgets.LoadingDataIndicator +import press.mantra.compose.ui.composable.widgets.profile.ProfileAvatar +import press.mantra.compose.ui.theme.TorchTheme +import press.mantra.compose.ui.view.model.SearchMemberToAddToChatRoomViewModel +import press.mantra.compose.ui.view.state.SearchMemberToAddToChatRoomUIState import com.vitorpamplona.quartz.nip01Core.core.HexKey @OptIn(ExperimentalMaterial3ExpressiveApi::class, ExperimentalMaterial3Api::class) diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/SearchResultScreen.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/SearchResultScreen.kt similarity index 93% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/SearchResultScreen.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/SearchResultScreen.kt index 0c40c6d7..1e713f77 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/SearchResultScreen.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/SearchResultScreen.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable +package press.mantra.compose.ui.composable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box @@ -49,10 +49,10 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel -import at.torch.compose.ui.composable.widgets.feed.ListView -import at.torch.compose.ui.view.model.SearchResultType -import at.torch.compose.ui.view.model.SearchResultViewModel -import at.torch.compose.ui.view.state.SearchResultListUIState +import press.mantra.compose.ui.composable.widgets.feed.ListView +import press.mantra.compose.ui.view.model.SearchResultType +import press.mantra.compose.ui.view.model.SearchResultViewModel +import press.mantra.compose.ui.view.state.SearchResultListUIState import kotlinx.coroutines.launch @OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterial3ExpressiveApi::class) @@ -60,10 +60,10 @@ import kotlinx.coroutines.launch fun SearchResultScreen( activeUserPublicKey: String, searchQuery: String, - nostrRepository: at.torch.compose.repository.NostrRepository, - searchRepository: at.torch.compose.repository.SearchRepository, + nostrRepository: press.mantra.compose.repository.NostrRepository, + searchRepository: press.mantra.compose.repository.SearchRepository, onNavigateBack: () -> Unit, - onNavigateToEvent: (at.torch.compose.ui.composable.navigation.routes.Route) -> Unit + onNavigateToEvent: (press.mantra.compose.ui.composable.navigation.routes.Route) -> Unit ) { val scope = rememberCoroutineScope() @@ -245,7 +245,7 @@ fun SearchResultScreen( localNostrEvent.ListView( onNavigateToEvent = { nostrEventId -> onNavigateToEvent.invoke( - _root_ide_package_.at.torch.compose.ui.composable.navigation.routes.NostrEventDetailRoute( + _root_ide_package_.press.mantra.compose.ui.composable.navigation.routes.NostrEventDetailRoute( activeUserPublicKey = activeUserPublicKey, nostrEventId = nostrEventId ) @@ -292,15 +292,15 @@ fun SearchResultScreen( @Preview @Composable private fun SearchResultScreenPreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + _root_ide_package_.press.mantra.compose.ui.theme.TorchTheme { Surface( modifier = Modifier.padding(20.dp) ) { SearchResultScreen( activeUserPublicKey = "", searchQuery = "What happened...", - nostrRepository = at.torch.compose.repository.NostrRepository.NO_OP_NOSTR_REPOSITORY, - searchRepository = at.torch.compose.repository.SearchRepository.NO_OP_SEARCH_REPOSITORY, + nostrRepository = press.mantra.compose.repository.NostrRepository.NO_OP_NOSTR_REPOSITORY, + searchRepository = press.mantra.compose.repository.SearchRepository.NO_OP_SEARCH_REPOSITORY, onNavigateBack = {}, onNavigateToEvent = {} ) diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/SearchScreen.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/SearchScreen.kt similarity index 96% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/SearchScreen.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/SearchScreen.kt index 79c7edab..93d7f572 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/SearchScreen.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/SearchScreen.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable +package press.mantra.compose.ui.composable import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement @@ -51,16 +51,16 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel -import at.torch.compose.repository.NostrRepository -import at.torch.compose.repository.SearchRepository -import at.torch.compose.ui.composable.navigation.routes.NostrEventDetailRoute -import at.torch.compose.ui.composable.navigation.routes.Route -import at.torch.compose.ui.composable.navigation.routes.SearchResultRoute -import at.torch.compose.ui.composable.widgets.profile.ProfileAvatar -import at.torch.compose.ui.composable.widgets.profile.ProfileColor -import at.torch.compose.ui.theme.TorchTheme -import at.torch.compose.ui.view.model.SearchViewModel -import at.torch.compose.ui.view.state.SearchUIState +import press.mantra.compose.repository.NostrRepository +import press.mantra.compose.repository.SearchRepository +import press.mantra.compose.ui.composable.navigation.routes.NostrEventDetailRoute +import press.mantra.compose.ui.composable.navigation.routes.Route +import press.mantra.compose.ui.composable.navigation.routes.SearchResultRoute +import press.mantra.compose.ui.composable.widgets.profile.ProfileAvatar +import press.mantra.compose.ui.composable.widgets.profile.ProfileColor +import press.mantra.compose.ui.theme.TorchTheme +import press.mantra.compose.ui.view.model.SearchViewModel +import press.mantra.compose.ui.view.state.SearchUIState @OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterial3ExpressiveApi::class) @Composable diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/ShareProfileScreen.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/ShareProfileScreen.kt similarity index 89% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/ShareProfileScreen.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/ShareProfileScreen.kt index c3d7d98d..932b3540 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/ShareProfileScreen.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/ShareProfileScreen.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable +package press.mantra.compose.ui.composable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -6,19 +6,12 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.ArrowBack import androidx.compose.material.icons.filled.ContentCopy -import androidx.compose.material.icons.filled.Edit -import androidx.compose.material.icons.filled.Hub -import androidx.compose.material.icons.filled.ImportExport -import androidx.compose.material.icons.filled.Key -import androidx.compose.material.icons.filled.Logout -import androidx.compose.material.icons.filled.QrCode import androidx.compose.material3.Button import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi @@ -39,17 +32,16 @@ import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel -import at.torch.compose.database.model.NostrEvent -import at.torch.compose.database.model.intermdiate.LocalNostrEvent -import at.torch.compose.extensions.hexToNpubHrp -import at.torch.compose.repository.NostrRepository -import at.torch.compose.ui.composable.navigation.routes.ImplementationPendingRoute -import at.torch.compose.ui.composable.navigation.routes.Route -import at.torch.compose.ui.composable.widgets.LoadingDataIndicator -import at.torch.compose.ui.composable.widgets.QRCodeView -import at.torch.compose.ui.composable.widgets.profile.ProfileAvatar -import at.torch.compose.ui.view.model.ShareProfileViewModel -import at.torch.compose.ui.view.state.ShareProfileUIState +import press.mantra.compose.database.model.NostrEvent +import press.mantra.compose.database.model.intermdiate.LocalNostrEvent +import press.mantra.compose.extensions.hexToNpubHrp +import press.mantra.compose.repository.NostrRepository +import press.mantra.compose.ui.composable.navigation.routes.Route +import press.mantra.compose.ui.composable.widgets.LoadingDataIndicator +import press.mantra.compose.ui.composable.widgets.QRCodeView +import press.mantra.compose.ui.composable.widgets.profile.ProfileAvatar +import press.mantra.compose.ui.view.model.ShareProfileViewModel +import press.mantra.compose.ui.view.state.ShareProfileUIState import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.metadata.MetadataEvent @@ -228,7 +220,7 @@ fun ShareProfileScreen( @Preview @Composable private fun UnannouncedProfileScreenPreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + _root_ide_package_.press.mantra.compose.ui.theme.TorchTheme { Surface( modifier = Modifier.fillMaxSize() ) { @@ -247,7 +239,7 @@ It has survived not only five centuries, but also the leap into electronic types sig = "", kind = MetadataEvent.KIND ), - profile = _root_ide_package_.at.torch.compose.database.model.Profile( + profile = _root_ide_package_.press.mantra.compose.database.model.Profile( publicKey = "84dee6e676e5bb67b4ad4e042cf70cbd8681155db535942fcc6a0533858a7240", displayName = "John Doe", nostrEventId = "nostrEventId", diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/SignInScreen.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/SignInScreen.kt similarity index 87% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/SignInScreen.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/SignInScreen.kt index 6774db19..4939ee92 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/SignInScreen.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/SignInScreen.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable +package press.mantra.compose.ui.composable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -34,11 +34,11 @@ import com.vitorpamplona.quartz.nip19Bech32.entities.NSec @OptIn(ExperimentalMaterial3ExpressiveApi::class) @Composable fun SignInToProfileScreen( - initialSignInToProfileUIState: at.torch.compose.ui.view.state.SignInToProfileUIState = at.torch.compose.ui.view.state.SignInToProfileUIState.InputPrompt, - nostrRepository: at.torch.compose.repository.NostrRepository + initialSignInToProfileUIState: press.mantra.compose.ui.view.state.SignInToProfileUIState = press.mantra.compose.ui.view.state.SignInToProfileUIState.InputPrompt, + nostrRepository: press.mantra.compose.repository.NostrRepository ) { - val signInToProfileViewModel: at.torch.compose.ui.view.model.SignInToProfileViewModel = viewModel ( - factory = at.torch.compose.ui.view.model.SignInToProfileViewModel.factory( + val signInToProfileViewModel: press.mantra.compose.ui.view.model.SignInToProfileViewModel = viewModel ( + factory = press.mantra.compose.ui.view.model.SignInToProfileViewModel.factory( initialSignInToProfileUIState, nostrRepository ) @@ -57,7 +57,7 @@ fun SignInToProfileScreen( ) { when (val signInToProfileUIState = signInToProfileViewModel.signInToProfileUIState.value) { - is at.torch.compose.ui.view.state.SignInToProfileUIState.InputPrompt -> { + is press.mantra.compose.ui.view.state.SignInToProfileUIState.InputPrompt -> { Text( "Sign In", style = MaterialTheme.typography.headlineSmall @@ -106,19 +106,19 @@ fun SignInToProfileScreen( signInToProfileViewModel.signInToProfileUIState.value = signInToProfileViewModel.validateCredential().let { credentialEntity -> when (credentialEntity) { is NSec -> { - at.torch.compose.ui.view.state.SignInToProfileUIState.ConfirmNsecSignIn( + press.mantra.compose.ui.view.state.SignInToProfileUIState.ConfirmNsecSignIn( nsec = signInToProfileViewModel.signInToProfileFormState.textFieldForm.textFieldState.text.toString(), hexKey = credentialEntity.hex ) } is NPub -> { - at.torch.compose.ui.view.state.SignInToProfileUIState.ConfirmNpubSignIn( + press.mantra.compose.ui.view.state.SignInToProfileUIState.ConfirmNpubSignIn( npub = signInToProfileViewModel.signInToProfileFormState.textFieldForm.textFieldState.text.toString(), hexKey = credentialEntity.hex ) } else -> { - at.torch.compose.ui.view.state.SignInToProfileUIState.Error + press.mantra.compose.ui.view.state.SignInToProfileUIState.Error } } } @@ -134,7 +134,7 @@ fun SignInToProfileScreen( } } - is at.torch.compose.ui.view.state.SignInToProfileUIState.ConfirmNpubSignIn-> { + is press.mantra.compose.ui.view.state.SignInToProfileUIState.ConfirmNpubSignIn-> { Spacer( modifier = Modifier.weight(1f) @@ -186,7 +186,7 @@ fun SignInToProfileScreen( } } - is at.torch.compose.ui.view.state.SignInToProfileUIState.ConfirmNsecSignIn-> { + is press.mantra.compose.ui.view.state.SignInToProfileUIState.ConfirmNsecSignIn-> { Spacer( modifier = Modifier.weight(1f) @@ -232,7 +232,7 @@ fun SignInToProfileScreen( } } - is at.torch.compose.ui.view.state.SignInToProfileUIState.Error -> { + is press.mantra.compose.ui.view.state.SignInToProfileUIState.Error -> { Spacer( modifier = Modifier.weight(1f) ) @@ -254,13 +254,13 @@ fun SignInToProfileScreen( @Preview @Composable private fun SignInToProfileScreenPreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + _root_ide_package_.press.mantra.compose.ui.theme.TorchTheme { Surface( modifier = Modifier.fillMaxSize() ) { SignInToProfileScreen( initialSignInToProfileUIState = - at.torch.compose.ui.view.state.SignInToProfileUIState.InputPrompt, + press.mantra.compose.ui.view.state.SignInToProfileUIState.InputPrompt, // SignInToProfileUIState.Error, // SignInToProfileUIState.ConfirmNpubSignIn( // npub = "npub1uh366qnj68a7atvwgwdy4569xd6v5jtferftapqztwjwlzh9553q47pqsx", @@ -270,7 +270,7 @@ private fun SignInToProfileScreenPreview() { // nsec = "nsecthingsaretobekeptsecret", // hexKey = "e5e3ad0272d1fbeead8e439a4ad3453374ca4969c8d2be84025ba4ef8ae5a522" // ), - nostrRepository = at.torch.compose.repository.NostrRepository.NO_OP_NOSTR_REPOSITORY + nostrRepository = press.mantra.compose.repository.NostrRepository.NO_OP_NOSTR_REPOSITORY ) } } diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/SocialPreconditionScreen.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/SocialPreconditionScreen.kt similarity index 97% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/SocialPreconditionScreen.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/SocialPreconditionScreen.kt index f6dbac9c..bdafdd29 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/SocialPreconditionScreen.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/SocialPreconditionScreen.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable +package press.mantra.compose.ui.composable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -114,7 +114,7 @@ fun SocialPreconditionScreen( @Preview @Composable private fun SocialPreconditionScreenPreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + _root_ide_package_.press.mantra.compose.ui.theme.TorchTheme { Surface( modifier = Modifier.padding(20.dp) ) { diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/SovereignWalletStartupScreen.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/SovereignWalletStartupScreen.kt similarity index 93% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/SovereignWalletStartupScreen.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/SovereignWalletStartupScreen.kt index e0ab0ca2..f78311b4 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/SovereignWalletStartupScreen.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/SovereignWalletStartupScreen.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable +package press.mantra.compose.ui.composable import androidx.compose.foundation.layout.* import androidx.compose.material3.HorizontalDivider @@ -16,7 +16,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel -import at.torch.compose.ui.composable.widgets.LoadingDataIndicator +import press.mantra.compose.ui.composable.widgets.LoadingDataIndicator import fr.acinq.phoenix.data.ListWalletState import fr.acinq.phoenix.data.UserWallet import fr.acinq.phoenix.data.WalletId @@ -29,14 +29,14 @@ import kotlinx.coroutines.flow.first @Composable fun SovereignWalletStartupScreen( - sovereignWalletViewModel: at.torch.compose.ui.view.model.SovereignWalletViewModel, + sovereignWalletViewModel: press.mantra.compose.ui.view.model.SovereignWalletViewModel, onNavigateToWalletIntroPage: () -> Unit, onNavigateToWalletLandingPage: () -> Unit, onSuccessfulStartup: () -> Unit, forceWalletId: WalletId?, ) { - val sovereignWalletStartupViewModel = viewModel( - factory = at.torch.compose.ui.view.model.SovereignWalletStartupViewModel.factory( + val sovereignWalletStartupViewModel = viewModel( + factory = press.mantra.compose.ui.view.model.SovereignWalletStartupViewModel.factory( phoenixGlobal = sovereignWalletViewModel.phoenixGlobal, ) ) @@ -102,7 +102,7 @@ fun SovereignWalletStartupScreen( } else -> { when (val startupState = sovereignWalletStartupViewModel.state.value) { - is at.torch.compose.ui.view.model.StartupViewState.Init -> { + is press.mantra.compose.ui.view.model.StartupViewState.Init -> { var loadingWallet by remember { mutableStateOf( when { @@ -117,7 +117,7 @@ fun SovereignWalletStartupScreen( } when (val wallet = loadingWallet) { null -> { - _root_ide_package_.at.torch.compose.ui.composable.widgets.wallet.WalletsSelector( + _root_ide_package_.press.mantra.compose.ui.composable.widgets.wallet.WalletsSelector( wallets = availableWallets, globalPrefs = globalPrefs, walletsMetadata = availableWalletMetadata, @@ -168,17 +168,17 @@ fun SovereignWalletStartupScreen( } } } - is at.torch.compose.ui.view.model.StartupViewState.StartingBusiness -> { + is press.mantra.compose.ui.view.model.StartupViewState.StartingBusiness -> { LoadingDataIndicator( text = "Starting wallet" ) } - is at.torch.compose.ui.view.model.StartupViewState.BusinessActive -> { + is press.mantra.compose.ui.view.model.StartupViewState.BusinessActive -> { LoadingDataIndicator( text = "Opening wallet" ) } - is at.torch.compose.ui.view.model.StartupViewState.Error -> { + is press.mantra.compose.ui.view.model.StartupViewState.Error -> { Column(horizontalAlignment = Alignment.CenterHorizontally) { Text( @@ -186,7 +186,7 @@ fun SovereignWalletStartupScreen( ) when (startupState) { - is at.torch.compose.ui.view.model.StartupViewState.Error.Generic -> { + is press.mantra.compose.ui.view.model.StartupViewState.Error.Generic -> { startupState.cause?.message?.let { message -> Text( text = message, diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/UnannouncedProfileScreen.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/UnannouncedProfileScreen.kt similarity index 92% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/UnannouncedProfileScreen.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/UnannouncedProfileScreen.kt index 52069381..2d04e931 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/UnannouncedProfileScreen.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/UnannouncedProfileScreen.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable +package press.mantra.compose.ui.composable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -52,7 +52,7 @@ fun UnannouncedProfileScreen() { Spacer( modifier = Modifier.weight(1f) ) - _root_ide_package_.at.torch.compose.ui.composable.widgets.LoadingDataIndicator( + _root_ide_package_.press.mantra.compose.ui.composable.widgets.LoadingDataIndicator( fillScreen = false ) @@ -70,7 +70,7 @@ fun UnannouncedProfileScreen() { @Preview @Composable private fun UnannouncedProfileScreenPreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + _root_ide_package_.press.mantra.compose.ui.theme.TorchTheme { Surface( modifier = Modifier.fillMaxSize() ) { diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/UnindexedProfileScreen.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/UnindexedProfileScreen.kt similarity index 92% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/UnindexedProfileScreen.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/UnindexedProfileScreen.kt index 6e1de360..d71b91b6 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/UnindexedProfileScreen.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/UnindexedProfileScreen.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable +package press.mantra.compose.ui.composable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -52,7 +52,7 @@ fun UnindexedProfileScreen() { Spacer( modifier = Modifier.weight(1f) ) - _root_ide_package_.at.torch.compose.ui.composable.widgets.LoadingDataIndicator( + _root_ide_package_.press.mantra.compose.ui.composable.widgets.LoadingDataIndicator( fillScreen = false ) @@ -70,7 +70,7 @@ fun UnindexedProfileScreen() { @Preview @Composable private fun UnannouncedProfileScreenPreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + _root_ide_package_.press.mantra.compose.ui.theme.TorchTheme { Surface( modifier = Modifier.fillMaxSize() ) { diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/UnqueuedProfileScreen.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/UnqueuedProfileScreen.kt similarity index 92% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/UnqueuedProfileScreen.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/UnqueuedProfileScreen.kt index db5fa780..1fd3b01c 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/UnqueuedProfileScreen.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/UnqueuedProfileScreen.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable +package press.mantra.compose.ui.composable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -52,7 +52,7 @@ fun UnqueuedProfileScreen() { Spacer( modifier = Modifier.weight(1f) ) - _root_ide_package_.at.torch.compose.ui.composable.widgets.LoadingDataIndicator( + _root_ide_package_.press.mantra.compose.ui.composable.widgets.LoadingDataIndicator( fillScreen = false ) @@ -70,7 +70,7 @@ fun UnqueuedProfileScreen() { @Preview @Composable private fun UnannouncedProfileScreenPreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + _root_ide_package_.press.mantra.compose.ui.theme.TorchTheme { Surface( modifier = Modifier.fillMaxSize() ) { diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/UnqueuedProfileSynchronizationScreen.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/UnqueuedProfileSynchronizationScreen.kt similarity index 82% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/UnqueuedProfileSynchronizationScreen.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/UnqueuedProfileSynchronizationScreen.kt index 7b2fbb11..fb417f29 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/UnqueuedProfileSynchronizationScreen.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/UnqueuedProfileSynchronizationScreen.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable +package press.mantra.compose.ui.composable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -25,10 +25,10 @@ import androidx.lifecycle.viewmodel.compose.viewModel fun UnqueuedProfileSynchronizationScreen( unsignedNostrEventId: Long, profilePublicKey: String, - nostrRepository: at.torch.compose.repository.NostrRepository + nostrRepository: press.mantra.compose.repository.NostrRepository ) { - val unqueuedProfileSynchronizationViewModel: at.torch.compose.ui.view.model.UnqueuedProfileSynchronizationViewModel = viewModel( - factory = at.torch.compose.ui.view.model.UnqueuedProfileSynchronizationViewModel.factory( + val unqueuedProfileSynchronizationViewModel: press.mantra.compose.ui.view.model.UnqueuedProfileSynchronizationViewModel = viewModel( + factory = press.mantra.compose.ui.view.model.UnqueuedProfileSynchronizationViewModel.factory( unsignedNostrEventId = unsignedNostrEventId, profilePublicKey = profilePublicKey, nostrRepository = nostrRepository @@ -63,7 +63,7 @@ fun UnqueuedProfileSynchronizationScreen( textAlign = TextAlign.Center ) - _root_ide_package_.at.torch.compose.ui.composable.widgets.LoadingDataIndicator( + _root_ide_package_.press.mantra.compose.ui.composable.widgets.LoadingDataIndicator( fillScreen = false ) @@ -82,14 +82,14 @@ fun UnqueuedProfileSynchronizationScreen( @Preview @Composable private fun UnqueuedProfileSynchronizationScreenPreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + _root_ide_package_.press.mantra.compose.ui.theme.TorchTheme { Surface( modifier = Modifier.fillMaxSize() ) { UnqueuedProfileSynchronizationScreen( unsignedNostrEventId = 2, profilePublicKey = "npub is for living.", - nostrRepository = at.torch.compose.repository.NostrRepository.NO_OP_NOSTR_REPOSITORY + nostrRepository = press.mantra.compose.repository.NostrRepository.NO_OP_NOSTR_REPOSITORY ) } } diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/UnsignedProfileScreen.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/UnsignedProfileScreen.kt similarity index 91% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/UnsignedProfileScreen.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/UnsignedProfileScreen.kt index 15f898ca..7b8a672e 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/UnsignedProfileScreen.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/UnsignedProfileScreen.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable +package press.mantra.compose.ui.composable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -49,7 +49,7 @@ fun UnsignedProfileScreen() { textAlign = TextAlign.Center ) - _root_ide_package_.at.torch.compose.ui.composable.widgets.LoadingDataIndicator( + _root_ide_package_.press.mantra.compose.ui.composable.widgets.LoadingDataIndicator( fillScreen = false ) @@ -64,7 +64,7 @@ fun UnsignedProfileScreen() { @Preview @Composable private fun UnsignedProfileScreenPreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + _root_ide_package_.press.mantra.compose.ui.theme.TorchTheme { Surface( modifier = Modifier.fillMaxSize() ) { diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/UnsyncedProfileScreen.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/UnsyncedProfileScreen.kt similarity index 92% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/UnsyncedProfileScreen.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/UnsyncedProfileScreen.kt index 03656396..d62cb0b2 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/UnsyncedProfileScreen.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/UnsyncedProfileScreen.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable +package press.mantra.compose.ui.composable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -51,7 +51,7 @@ fun UnsyncedProfileScreen( textAlign = TextAlign.Center ) - _root_ide_package_.at.torch.compose.ui.composable.widgets.LoadingDataIndicator( + _root_ide_package_.press.mantra.compose.ui.composable.widgets.LoadingDataIndicator( fillScreen = false ) @@ -66,7 +66,7 @@ fun UnsyncedProfileScreen( @Preview @Composable private fun UnsyncedProfileScreenPreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + _root_ide_package_.press.mantra.compose.ui.theme.TorchTheme { Surface( modifier = Modifier.fillMaxSize() ) { diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/WriteNewNoteScreen.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/WriteNewNoteScreen.kt similarity index 89% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/WriteNewNoteScreen.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/WriteNewNoteScreen.kt index 470401ab..b42e0b48 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/WriteNewNoteScreen.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/WriteNewNoteScreen.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable +package press.mantra.compose.ui.composable import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.layout.Arrangement @@ -39,7 +39,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel -import at.torch.compose.extensions.toFormattedTimeAndDateString +import press.mantra.compose.extensions.toFormattedTimeAndDateString import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip10Notes.TextNoteEvent import kotlin.time.Clock @@ -48,15 +48,15 @@ import kotlin.time.Clock @Composable fun WriteNewNoteScreen( activeUserPublicKey: HexKey, - initialWriteNewNoteUIState: at.torch.compose.ui.view.state.WriteNewNoteUIState = at.torch.compose.ui.view.state.WriteNewNoteUIState.Loading, + initialWriteNewNoteUIState: press.mantra.compose.ui.view.state.WriteNewNoteUIState = press.mantra.compose.ui.view.state.WriteNewNoteUIState.Loading, replyToNostrEventId: HexKey?, quotedNostrEventId: HexKey?, onNostrEventPublished: () -> Unit, onNavigateToNostrEvent: (HexKey) -> Unit, - nostrRepository: at.torch.compose.repository.NostrRepository + nostrRepository: press.mantra.compose.repository.NostrRepository ) { - val writeNewNoteViewModel: at.torch.compose.ui.view.model.WriteNewNoteViewModel = viewModel ( - factory = at.torch.compose.ui.view.model.WriteNewNoteViewModel.factory( + val writeNewNoteViewModel: press.mantra.compose.ui.view.model.WriteNewNoteViewModel = viewModel ( + factory = press.mantra.compose.ui.view.model.WriteNewNoteViewModel.factory( activeUserPublicKey = activeUserPublicKey, replyToNostrEventId = replyToNostrEventId, quotedNostrEventId = quotedNostrEventId, @@ -78,10 +78,10 @@ fun WriteNewNoteScreen( ) { when (val writeNewNoteUIState = writeNewNoteViewModel.writeNewNoteUIState) { - is at.torch.compose.ui.view.state.WriteNewNoteUIState.Loading -> { - _root_ide_package_.at.torch.compose.ui.composable.widgets.LoadingDataIndicator() + is press.mantra.compose.ui.view.state.WriteNewNoteUIState.Loading -> { + _root_ide_package_.press.mantra.compose.ui.composable.widgets.LoadingDataIndicator() } - is at.torch.compose.ui.view.state.WriteNewNoteUIState.InputPrompt -> { + is press.mantra.compose.ui.view.state.WriteNewNoteUIState.InputPrompt -> { val listState = rememberLazyListState() @@ -158,7 +158,7 @@ fun WriteNewNoteScreen( ) }, leadingIcon = { - _root_ide_package_.at.torch.compose.ui.composable.widgets.profile.ProfileAvatar( + _root_ide_package_.press.mantra.compose.ui.composable.widgets.profile.ProfileAvatar( profile = writeNewNoteUIState.localProfile.profile, size = 35.dp ) @@ -175,8 +175,8 @@ fun WriteNewNoteScreen( }, outputTransformation = OutputTransformation { val content = originalText.toString() - val nostrProfiles = at.torch.compose.ui.composable.widgets.content.ContentParser.parse(content.trimEnd('\n', '\r'), emptyMap(), emptyMap(), trimBlankLines = true) - .filterIsInstance() + val nostrProfiles = press.mantra.compose.ui.composable.widgets.content.ContentParser.parse(content.trimEnd('\n', '\r'), emptyMap(), emptyMap(), trimBlankLines = true) + .filterIsInstance() // TODO: We might want to order these profiles by the startIndex so that we can replace the better if (writeNewNoteViewModel.mentionedProfiles.isNotEmpty()) { @@ -192,7 +192,7 @@ fun WriteNewNoteScreen( addStyle( SpanStyle( - color = at.torch.compose.ui.composable.widgets.profile.ProfileColor.fromPublicKey(mentionedProfile.publicKey) + color = press.mantra.compose.ui.composable.widgets.profile.ProfileColor.fromPublicKey(mentionedProfile.publicKey) ), nostrProfile.startIndex, nostrProfile.startIndex + profileMention.length @@ -219,7 +219,7 @@ fun WriteNewNoteScreen( ) }, leadingIcon = { - _root_ide_package_.at.torch.compose.ui.composable.widgets.profile.ProfileAvatar( + _root_ide_package_.press.mantra.compose.ui.composable.widgets.profile.ProfileAvatar( profile = profile ) }, @@ -274,7 +274,7 @@ fun WriteNewNoteScreen( } } - is at.torch.compose.ui.view.state.WriteNewNoteUIState.ConfirmNote-> { + is press.mantra.compose.ui.view.state.WriteNewNoteUIState.ConfirmNote-> { val listState = rememberLazyListState() @@ -322,7 +322,7 @@ fun WriteNewNoteScreen( ) } - _root_ide_package_.at.torch.compose.ui.composable.widgets.profile.ProfileAvatar( + _root_ide_package_.press.mantra.compose.ui.composable.widgets.profile.ProfileAvatar( profile = writeNewNoteUIState.localProfile.profile ) @@ -334,9 +334,9 @@ fun WriteNewNoteScreen( ) } - _root_ide_package_.at.torch.compose.ui.composable.widgets.content.RichContent( + _root_ide_package_.press.mantra.compose.ui.composable.widgets.content.RichContent( // Hack to have the thing rendered for a preview... - nostrEvent = _root_ide_package_.at.torch.compose.database.model.NostrEvent( + nostrEvent = _root_ide_package_.press.mantra.compose.database.model.NostrEvent( id = "", content = writeNewNoteUIState.text, sig = "", @@ -347,8 +347,8 @@ fun WriteNewNoteScreen( ), localQuotedNostrEvent = null, mentionedProfiles = writeNewNoteViewModel.mentionableProfiles.map { - _root_ide_package_.at.torch.compose.database.model.intermdiate.LocalMention( - mention = _root_ide_package_.at.torch.compose.database.model.Mention( + _root_ide_package_.press.mantra.compose.database.model.intermdiate.LocalMention( + mention = _root_ide_package_.press.mantra.compose.database.model.Mention( mentionedPublicKey = it.publicKey, mentioningNostrEventId = "" ), @@ -417,7 +417,7 @@ fun WriteNewNoteScreen( } } - is at.torch.compose.ui.view.state.WriteNewNoteUIState.Error -> { + is press.mantra.compose.ui.view.state.WriteNewNoteUIState.Error -> { Spacer( modifier = Modifier.weight(1f) ) @@ -443,7 +443,7 @@ fun WriteNewNoteScreen( @Preview @Composable private fun WriteNewNoteScreenPreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + _root_ide_package_.press.mantra.compose.ui.theme.TorchTheme { Surface( modifier = Modifier.fillMaxSize() ) { @@ -452,10 +452,10 @@ private fun WriteNewNoteScreenPreview() { replyToNostrEventId = null, quotedNostrEventId = null, initialWriteNewNoteUIState = - at.torch.compose.ui.view.state.WriteNewNoteUIState.InputPrompt( + press.mantra.compose.ui.view.state.WriteNewNoteUIState.InputPrompt( // text = "Yes, I did it. So WHAT?!", - inReplyToNostrEvent = _root_ide_package_.at.torch.compose.database.model.intermdiate.LocalNostrEvent( - nostrEvent = _root_ide_package_.at.torch.compose.database.model.NostrEvent( + inReplyToNostrEvent = _root_ide_package_.press.mantra.compose.database.model.intermdiate.LocalNostrEvent( + nostrEvent = _root_ide_package_.press.mantra.compose.database.model.NostrEvent( id = "eventId", pubKey = "publicKey", content = """Lorem Ipsum is simply dummy text of the printing and typesetting industry. @@ -467,14 +467,14 @@ It has survived not only five centuries, but also the leap into electronic types sig = "", kind = TextNoteEvent.KIND ), - profile = _root_ide_package_.at.torch.compose.database.model.Profile( + profile = _root_ide_package_.press.mantra.compose.database.model.Profile( publicKey = "pubKey", displayName = "John Doe", nostrEventId = "nostrEventId" ), ), - localProfile = _root_ide_package_.at.torch.compose.database.model.intermdiate.LocalProfileWithFollowing( - nostrEvent = _root_ide_package_.at.torch.compose.database.model.NostrEvent( + localProfile = _root_ide_package_.press.mantra.compose.database.model.intermdiate.LocalProfileWithFollowing( + nostrEvent = _root_ide_package_.press.mantra.compose.database.model.NostrEvent( id = "eventId", pubKey = "publicKey", content = """Lorem Ipsum is simply dummy text of the printing and typesetting industry. @@ -486,7 +486,7 @@ It has survived not only five centuries, but also the leap into electronic types sig = "", kind = TextNoteEvent.KIND ), - profile = _root_ide_package_.at.torch.compose.database.model.Profile( + profile = _root_ide_package_.press.mantra.compose.database.model.Profile( publicKey = "pubKey", displayName = "John Doe", nip05 = "john@doe.com", @@ -497,7 +497,7 @@ It has survived not only five centuries, but also the leap into electronic types ), onNostrEventPublished = {}, onNavigateToNostrEvent = {}, - nostrRepository = at.torch.compose.repository.NostrRepository.NO_OP_NOSTR_REPOSITORY + nostrRepository = press.mantra.compose.repository.NostrRepository.NO_OP_NOSTR_REPOSITORY ) } } diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/TorchNavHost.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/MantraNavHost.kt similarity index 83% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/TorchNavHost.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/MantraNavHost.kt index 2ffc4bdc..e8b96ed9 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/TorchNavHost.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/MantraNavHost.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.navigation +package press.mantra.compose.ui.composable.navigation import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material3.Surface @@ -12,72 +12,72 @@ import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.toRoute -import at.torch.compose.TorchGlobal -import at.torch.compose.database.repository.DatabaseChatRepository -import at.torch.compose.database.repository.DatabaseMarmotRepository -import at.torch.compose.database.repository.DatabaseNostrRepository -import at.torch.compose.database.repository.DatabaseSearchRepository -import at.torch.compose.managers.AuxDatabaseManager -import at.torch.compose.ui.composable.ActiveProfileScreen -import at.torch.compose.ui.composable.AddMemberToChatRoomConfirmationScreen -import at.torch.compose.ui.composable.ChatRoomCreationScreen -import at.torch.compose.ui.composable.ChatRoomDetailScreen -import at.torch.compose.ui.composable.ChatRoomMessagingScreen -import at.torch.compose.ui.composable.CreateProfileScreen -import at.torch.compose.ui.composable.HomeScreen -import at.torch.compose.ui.composable.ImplementationPendingScreen -import at.torch.compose.ui.composable.KeyPackageManagementScreen -import at.torch.compose.ui.composable.LandingScreen -import at.torch.compose.ui.composable.LoadingScreen -import at.torch.compose.ui.composable.NostrEventDetailScreen -import at.torch.compose.ui.composable.SearchMemberToAddToChatRoomScreen -import at.torch.compose.ui.composable.SearchResultScreen -import at.torch.compose.ui.composable.SearchScreen -import at.torch.compose.ui.composable.ShareProfileScreen -import at.torch.compose.ui.composable.SignInToProfileScreen -import at.torch.compose.ui.composable.SocialPreconditionScreen -import at.torch.compose.ui.composable.SovereignWalletStartupScreen -import at.torch.compose.ui.composable.UnannouncedProfileScreen -import at.torch.compose.ui.composable.UnindexedProfileScreen -import at.torch.compose.ui.composable.UnqueuedProfileScreen -import at.torch.compose.ui.composable.UnqueuedProfileSynchronizationScreen -import at.torch.compose.ui.composable.UnsignedProfileScreen -import at.torch.compose.ui.composable.UnsyncedProfileScreen -import at.torch.compose.ui.composable.WriteNewNoteScreen -import at.torch.compose.ui.composable.navigation.routes.ActiveProfileRoute -import at.torch.compose.ui.composable.navigation.routes.AddMemberToChatRoomConfirmationRoute -import at.torch.compose.ui.composable.navigation.routes.BlankRoute -import at.torch.compose.ui.composable.navigation.routes.ChatRoomCreationRoute -import at.torch.compose.ui.composable.navigation.routes.ChatRoomDetailRoute -import at.torch.compose.ui.composable.navigation.routes.ChatRoomMessagingRoute -import at.torch.compose.ui.composable.navigation.routes.CreateProfileRoute -import at.torch.compose.ui.composable.navigation.routes.HomeRoute -import at.torch.compose.ui.composable.navigation.routes.ImplementationPendingRoute -import at.torch.compose.ui.composable.navigation.routes.KeyPackageManagementRoute -import at.torch.compose.ui.composable.navigation.routes.LandingRoute -import at.torch.compose.ui.composable.navigation.routes.LoadingRoute -import at.torch.compose.ui.composable.navigation.routes.NostrEventDetailRoute -import at.torch.compose.ui.composable.navigation.routes.SearchMemberToAddToChatRoomRoute -import at.torch.compose.ui.composable.navigation.routes.SearchResultRoute -import at.torch.compose.ui.composable.navigation.routes.SearchRoute -import at.torch.compose.ui.composable.navigation.routes.ShareProfileRoute -import at.torch.compose.ui.composable.navigation.routes.SignInRoute -import at.torch.compose.ui.composable.navigation.routes.SocialPreconditionRoute -import at.torch.compose.ui.composable.navigation.routes.SovereignWalletStartupRoute -import at.torch.compose.ui.composable.navigation.routes.UnannouncedProfileRoute -import at.torch.compose.ui.composable.navigation.routes.UnindexedProfileRoute -import at.torch.compose.ui.composable.navigation.routes.UnqueuedProfileRoute -import at.torch.compose.ui.composable.navigation.routes.UnqueuedProfileSynchronizationRoute -import at.torch.compose.ui.composable.navigation.routes.UnsignedProfileRoute -import at.torch.compose.ui.composable.navigation.routes.UnsyncedProfileRoute -import at.torch.compose.ui.composable.navigation.routes.WriteNewNoteRoute -import at.torch.compose.ui.view.model.NavigationViewModel -import at.torch.compose.ui.view.model.NotaryViewModel -import at.torch.compose.ui.view.model.SovereignWalletViewModel -import at.torch.compose.ui.view.model.SynchronizationViewModel -import at.torch.compose.ui.view.state.NavigationUIState -import at.torch.compose.ui.view.state.NostrEventDetailUIState -import at.torch.compose.ui.view.state.SearchUIState +import press.mantra.compose.MantraGlobal +import press.mantra.compose.database.repository.DatabaseChatRepository +import press.mantra.compose.database.repository.DatabaseMarmotRepository +import press.mantra.compose.database.repository.DatabaseNostrRepository +import press.mantra.compose.database.repository.DatabaseSearchRepository +import press.mantra.compose.managers.AuxDatabaseManager +import press.mantra.compose.ui.composable.ActiveProfileScreen +import press.mantra.compose.ui.composable.AddMemberToChatRoomConfirmationScreen +import press.mantra.compose.ui.composable.ChatRoomCreationScreen +import press.mantra.compose.ui.composable.ChatRoomDetailScreen +import press.mantra.compose.ui.composable.ChatRoomMessagingScreen +import press.mantra.compose.ui.composable.CreateProfileScreen +import press.mantra.compose.ui.composable.HomeScreen +import press.mantra.compose.ui.composable.ImplementationPendingScreen +import press.mantra.compose.ui.composable.KeyPackageManagementScreen +import press.mantra.compose.ui.composable.LandingScreen +import press.mantra.compose.ui.composable.LoadingScreen +import press.mantra.compose.ui.composable.NostrEventDetailScreen +import press.mantra.compose.ui.composable.SearchMemberToAddToChatRoomScreen +import press.mantra.compose.ui.composable.SearchResultScreen +import press.mantra.compose.ui.composable.SearchScreen +import press.mantra.compose.ui.composable.ShareProfileScreen +import press.mantra.compose.ui.composable.SignInToProfileScreen +import press.mantra.compose.ui.composable.SocialPreconditionScreen +import press.mantra.compose.ui.composable.SovereignWalletStartupScreen +import press.mantra.compose.ui.composable.UnannouncedProfileScreen +import press.mantra.compose.ui.composable.UnindexedProfileScreen +import press.mantra.compose.ui.composable.UnqueuedProfileScreen +import press.mantra.compose.ui.composable.UnqueuedProfileSynchronizationScreen +import press.mantra.compose.ui.composable.UnsignedProfileScreen +import press.mantra.compose.ui.composable.UnsyncedProfileScreen +import press.mantra.compose.ui.composable.WriteNewNoteScreen +import press.mantra.compose.ui.composable.navigation.routes.ActiveProfileRoute +import press.mantra.compose.ui.composable.navigation.routes.AddMemberToChatRoomConfirmationRoute +import press.mantra.compose.ui.composable.navigation.routes.BlankRoute +import press.mantra.compose.ui.composable.navigation.routes.ChatRoomCreationRoute +import press.mantra.compose.ui.composable.navigation.routes.ChatRoomDetailRoute +import press.mantra.compose.ui.composable.navigation.routes.ChatRoomMessagingRoute +import press.mantra.compose.ui.composable.navigation.routes.CreateProfileRoute +import press.mantra.compose.ui.composable.navigation.routes.HomeRoute +import press.mantra.compose.ui.composable.navigation.routes.ImplementationPendingRoute +import press.mantra.compose.ui.composable.navigation.routes.KeyPackageManagementRoute +import press.mantra.compose.ui.composable.navigation.routes.LandingRoute +import press.mantra.compose.ui.composable.navigation.routes.LoadingRoute +import press.mantra.compose.ui.composable.navigation.routes.NostrEventDetailRoute +import press.mantra.compose.ui.composable.navigation.routes.SearchMemberToAddToChatRoomRoute +import press.mantra.compose.ui.composable.navigation.routes.SearchResultRoute +import press.mantra.compose.ui.composable.navigation.routes.SearchRoute +import press.mantra.compose.ui.composable.navigation.routes.ShareProfileRoute +import press.mantra.compose.ui.composable.navigation.routes.SignInRoute +import press.mantra.compose.ui.composable.navigation.routes.SocialPreconditionRoute +import press.mantra.compose.ui.composable.navigation.routes.SovereignWalletStartupRoute +import press.mantra.compose.ui.composable.navigation.routes.UnannouncedProfileRoute +import press.mantra.compose.ui.composable.navigation.routes.UnindexedProfileRoute +import press.mantra.compose.ui.composable.navigation.routes.UnqueuedProfileRoute +import press.mantra.compose.ui.composable.navigation.routes.UnqueuedProfileSynchronizationRoute +import press.mantra.compose.ui.composable.navigation.routes.UnsignedProfileRoute +import press.mantra.compose.ui.composable.navigation.routes.UnsyncedProfileRoute +import press.mantra.compose.ui.composable.navigation.routes.WriteNewNoteRoute +import press.mantra.compose.ui.view.model.NavigationViewModel +import press.mantra.compose.ui.view.model.NotaryViewModel +import press.mantra.compose.ui.view.model.SovereignWalletViewModel +import press.mantra.compose.ui.view.model.SynchronizationViewModel +import press.mantra.compose.ui.view.state.NavigationUIState +import press.mantra.compose.ui.view.state.NostrEventDetailUIState +import press.mantra.compose.ui.view.state.SearchUIState import co.touchlab.kermit.Logger import fr.acinq.phoenix.PhoenixGlobal import kotlinx.coroutines.CoroutineExceptionHandler @@ -88,12 +88,12 @@ import kotlinx.coroutines.SupervisorJob import kotlinx.coroutines.launch @Composable -fun TorchNavHost( - torchGlobal: TorchGlobal, +fun MantraNavHost( + mantraGlobal: MantraGlobal, phoenixGlobal: PhoenixGlobal, navController: NavHostController ) { - val logger = Logger.withTag("AuxNavHost") + val logger = Logger.withTag("MantraNavHost") val exceptionHandler = CoroutineExceptionHandler { _, throwable -> logger.e("Caught exception: ${throwable.message}", throwable) @@ -105,7 +105,7 @@ fun TorchNavHost( val lifecycleOwner = LocalLifecycleOwner.current val auxDatabaseManager = - AuxDatabaseManager(torchGlobal) + AuxDatabaseManager(mantraGlobal) val databaseNostrRepository = DatabaseNostrRepository( database = auxDatabaseManager.auxDatabase, diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/ActiveProfileRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/ActiveProfileRoute.kt similarity index 68% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/ActiveProfileRoute.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/ActiveProfileRoute.kt index f19ea00f..a01d46e9 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/ActiveProfileRoute.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/ActiveProfileRoute.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.navigation.routes +package press.mantra.compose.ui.composable.navigation.routes import kotlinx.serialization.Serializable diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/AddMemberToChatRoomConfirmationRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/AddMemberToChatRoomConfirmationRoute.kt similarity index 81% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/AddMemberToChatRoomConfirmationRoute.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/AddMemberToChatRoomConfirmationRoute.kt index 66d09722..a559c8d7 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/AddMemberToChatRoomConfirmationRoute.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/AddMemberToChatRoomConfirmationRoute.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.navigation.routes +package press.mantra.compose.ui.composable.navigation.routes import com.vitorpamplona.quartz.nip01Core.core.HexKey import kotlinx.serialization.Serializable diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/AuthenticatedProfileRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/AuthenticatedProfileRoute.kt new file mode 100644 index 00000000..b97f3650 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/AuthenticatedProfileRoute.kt @@ -0,0 +1,6 @@ +package press.mantra.compose.ui.composable.navigation.routes + +import kotlinx.serialization.Serializable + +@Serializable +data object AuthenticatedProfileRoute \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/BlankRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/BlankRoute.kt new file mode 100755 index 00000000..c369421b --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/BlankRoute.kt @@ -0,0 +1,6 @@ +package press.mantra.compose.ui.composable.navigation.routes + +import kotlinx.serialization.Serializable + +@Serializable +object BlankRoute: Route() \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/ChatRoomCreationRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/ChatRoomCreationRoute.kt similarity index 64% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/ChatRoomCreationRoute.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/ChatRoomCreationRoute.kt index 4f868665..a411749a 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/ChatRoomCreationRoute.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/ChatRoomCreationRoute.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.navigation.routes +package press.mantra.compose.ui.composable.navigation.routes import kotlinx.serialization.Serializable diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/ChatRoomDetailRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/ChatRoomDetailRoute.kt similarity index 75% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/ChatRoomDetailRoute.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/ChatRoomDetailRoute.kt index b2617278..a671ee40 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/ChatRoomDetailRoute.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/ChatRoomDetailRoute.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.navigation.routes +package press.mantra.compose.ui.composable.navigation.routes import kotlinx.serialization.Serializable diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/ChatRoomMessagingRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/ChatRoomMessagingRoute.kt similarity index 75% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/ChatRoomMessagingRoute.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/ChatRoomMessagingRoute.kt index e74cf0c2..fba38f19 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/ChatRoomMessagingRoute.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/ChatRoomMessagingRoute.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.navigation.routes +package press.mantra.compose.ui.composable.navigation.routes import kotlinx.serialization.Serializable diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/CreateProfileRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/CreateProfileRoute.kt similarity index 64% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/CreateProfileRoute.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/CreateProfileRoute.kt index 23696584..b0ea6406 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/CreateProfileRoute.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/CreateProfileRoute.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.navigation.routes +package press.mantra.compose.ui.composable.navigation.routes import kotlinx.serialization.Serializable diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/HomeRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/HomeRoute.kt similarity index 62% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/HomeRoute.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/HomeRoute.kt index 694d7232..2939379d 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/HomeRoute.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/HomeRoute.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.navigation.routes +package press.mantra.compose.ui.composable.navigation.routes import kotlinx.serialization.Serializable diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/ImplementationPendingRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/ImplementationPendingRoute.kt similarity index 62% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/ImplementationPendingRoute.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/ImplementationPendingRoute.kt index 562c1418..6a9ace6e 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/ImplementationPendingRoute.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/ImplementationPendingRoute.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.navigation.routes +package press.mantra.compose.ui.composable.navigation.routes import kotlinx.serialization.Serializable diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/KeyPackageManagementRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/KeyPackageManagementRoute.kt similarity index 69% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/KeyPackageManagementRoute.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/KeyPackageManagementRoute.kt index c26d0d02..8c79c38b 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/KeyPackageManagementRoute.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/KeyPackageManagementRoute.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.navigation.routes +package press.mantra.compose.ui.composable.navigation.routes import kotlinx.serialization.Serializable diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/LandingRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/LandingRoute.kt new file mode 100755 index 00000000..5c53c44c --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/LandingRoute.kt @@ -0,0 +1,6 @@ +package press.mantra.compose.ui.composable.navigation.routes + +import kotlinx.serialization.Serializable + +@Serializable +object LandingRoute: Route() \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/LoadingRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/LoadingRoute.kt similarity index 61% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/LoadingRoute.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/LoadingRoute.kt index 09889b92..0ae58037 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/LoadingRoute.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/LoadingRoute.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.navigation.routes +package press.mantra.compose.ui.composable.navigation.routes import kotlinx.serialization.Serializable diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/NostrEventDetailRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/NostrEventDetailRoute.kt similarity index 69% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/NostrEventDetailRoute.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/NostrEventDetailRoute.kt index 5074f8b4..e75affe8 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/NostrEventDetailRoute.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/NostrEventDetailRoute.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.navigation.routes +package press.mantra.compose.ui.composable.navigation.routes import kotlinx.serialization.Serializable diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/Route.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/Route.kt new file mode 100755 index 00000000..ff103c09 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/Route.kt @@ -0,0 +1,3 @@ +package press.mantra.compose.ui.composable.navigation.routes + +abstract class Route \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/SearchMemberToAddToChatRoomRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/SearchMemberToAddToChatRoomRoute.kt similarity index 76% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/SearchMemberToAddToChatRoomRoute.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/SearchMemberToAddToChatRoomRoute.kt index 85202bc5..e59d7dde 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/SearchMemberToAddToChatRoomRoute.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/SearchMemberToAddToChatRoomRoute.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.navigation.routes +package press.mantra.compose.ui.composable.navigation.routes import kotlinx.serialization.Serializable diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/SearchResultRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/SearchResultRoute.kt similarity index 67% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/SearchResultRoute.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/SearchResultRoute.kt index a3154280..2f2ecd7d 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/SearchResultRoute.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/SearchResultRoute.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.navigation.routes +package press.mantra.compose.ui.composable.navigation.routes import kotlinx.serialization.Serializable diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/SearchRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/SearchRoute.kt similarity index 62% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/SearchRoute.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/SearchRoute.kt index 3a84cc83..c6c23731 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/SearchRoute.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/SearchRoute.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.navigation.routes +package press.mantra.compose.ui.composable.navigation.routes import kotlinx.serialization.Serializable diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/ShareProfileRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/ShareProfileRoute.kt similarity index 68% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/ShareProfileRoute.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/ShareProfileRoute.kt index 88b1ccbe..ff531fcd 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/ShareProfileRoute.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/ShareProfileRoute.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.navigation.routes +package press.mantra.compose.ui.composable.navigation.routes import kotlinx.serialization.Serializable diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/SignInRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/SignInRoute.kt new file mode 100755 index 00000000..9dd99737 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/SignInRoute.kt @@ -0,0 +1,6 @@ +package press.mantra.compose.ui.composable.navigation.routes + +import kotlinx.serialization.Serializable + +@Serializable +object SignInRoute: Route() \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/SocialPreconditionRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/SocialPreconditionRoute.kt similarity index 64% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/SocialPreconditionRoute.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/SocialPreconditionRoute.kt index b6ada992..05c77509 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/SocialPreconditionRoute.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/SocialPreconditionRoute.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.navigation.routes +package press.mantra.compose.ui.composable.navigation.routes import kotlinx.serialization.Serializable diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/SovereignWalletStartupRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/SovereignWalletStartupRoute.kt new file mode 100644 index 00000000..8193c662 --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/SovereignWalletStartupRoute.kt @@ -0,0 +1,6 @@ +package press.mantra.compose.ui.composable.navigation.routes + +import kotlinx.serialization.Serializable + +@Serializable +data object SovereignWalletStartupRoute \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/UnannouncedProfileRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/UnannouncedProfileRoute.kt similarity index 63% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/UnannouncedProfileRoute.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/UnannouncedProfileRoute.kt index f09a0848..0b3f18ca 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/UnannouncedProfileRoute.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/UnannouncedProfileRoute.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.navigation.routes +package press.mantra.compose.ui.composable.navigation.routes import kotlinx.serialization.Serializable diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/UnindexedProfileRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/UnindexedProfileRoute.kt similarity index 63% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/UnindexedProfileRoute.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/UnindexedProfileRoute.kt index c28c612a..26ded857 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/UnindexedProfileRoute.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/UnindexedProfileRoute.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.navigation.routes +package press.mantra.compose.ui.composable.navigation.routes import kotlinx.serialization.Serializable diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/UnqueuedProfileRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/UnqueuedProfileRoute.kt similarity index 63% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/UnqueuedProfileRoute.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/UnqueuedProfileRoute.kt index da78efd2..0903194f 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/UnqueuedProfileRoute.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/UnqueuedProfileRoute.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.navigation.routes +package press.mantra.compose.ui.composable.navigation.routes import kotlinx.serialization.Serializable diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/UnqueuedProfileSynchronizationRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/UnqueuedProfileSynchronizationRoute.kt similarity index 70% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/UnqueuedProfileSynchronizationRoute.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/UnqueuedProfileSynchronizationRoute.kt index 897ba8c9..6e1ce8f7 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/UnqueuedProfileSynchronizationRoute.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/UnqueuedProfileSynchronizationRoute.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.navigation.routes +package press.mantra.compose.ui.composable.navigation.routes import kotlinx.serialization.Serializable diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/UnsignedProfileRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/UnsignedProfileRoute.kt similarity index 64% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/UnsignedProfileRoute.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/UnsignedProfileRoute.kt index 85cff4a4..66bbb49f 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/UnsignedProfileRoute.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/UnsignedProfileRoute.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.navigation.routes +package press.mantra.compose.ui.composable.navigation.routes import kotlinx.serialization.Serializable diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/UnsyncedProfileRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/UnsyncedProfileRoute.kt similarity index 62% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/UnsyncedProfileRoute.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/UnsyncedProfileRoute.kt index bc2ba384..45b87707 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/UnsyncedProfileRoute.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/UnsyncedProfileRoute.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.navigation.routes +package press.mantra.compose.ui.composable.navigation.routes import kotlinx.serialization.Serializable diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/WriteNewNoteRoute.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/WriteNewNoteRoute.kt similarity index 74% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/WriteNewNoteRoute.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/WriteNewNoteRoute.kt index 59b6e09b..0a2f3a96 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/navigation/routes/WriteNewNoteRoute.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/navigation/routes/WriteNewNoteRoute.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.navigation.routes +package press.mantra.compose.ui.composable.navigation.routes import kotlinx.serialization.Serializable diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/LoadingDataIndicator.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/LoadingDataIndicator.kt similarity index 93% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/LoadingDataIndicator.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/LoadingDataIndicator.kt index bc313252..a5f22469 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/LoadingDataIndicator.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/LoadingDataIndicator.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets +package press.mantra.compose.ui.composable.widgets import androidx.compose.foundation.layout.* import androidx.compose.material3.CircularProgressIndicator @@ -57,7 +57,7 @@ fun LoadingDataIndicator( @Preview @Composable private fun TransferHistoryScreenPreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + _root_ide_package_.press.mantra.compose.ui.theme.TorchTheme { Surface(modifier = Modifier.fillMaxSize()) { LoadingDataIndicator( text = "Starting up" diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/QRCodeView.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/QRCodeView.kt similarity index 92% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/QRCodeView.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/QRCodeView.kt index fb2a42dc..f4e0a4db 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/QRCodeView.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/QRCodeView.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets +package press.mantra.compose.ui.composable.widgets import androidx.compose.foundation.Image import androidx.compose.foundation.isSystemInDarkTheme @@ -14,15 +14,15 @@ import androidx.compose.ui.graphics.drawscope.translate import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import at.torch.compose.ui.theme.BluePill +import press.mantra.compose.ui.theme.BluePill import io.github.alexzhirkevich.qrose.options.QrBrush import io.github.alexzhirkevich.qrose.options.QrLogoPadding import io.github.alexzhirkevich.qrose.options.QrLogoShape import io.github.alexzhirkevich.qrose.options.solid import io.github.alexzhirkevich.qrose.rememberQrCodePainter import org.jetbrains.compose.resources.painterResource -import torch.composeapp.generated.resources.Res -import torch.composeapp.generated.resources.compose_multiplatform +import mantra.composeapp.generated.resources.Res +import mantra.composeapp.generated.resources.compose_multiplatform class QRCodeBackgroundPainter( private val painter: Painter, diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/buttons/Clickable.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/buttons/Clickable.kt similarity index 100% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/buttons/Clickable.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/buttons/Clickable.kt diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/coil/forwardingPainter.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/coil/forwardingPainter.kt similarity index 96% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/coil/forwardingPainter.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/coil/forwardingPainter.kt index 13a0aa7e..683d7a83 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/coil/forwardingPainter.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/coil/forwardingPainter.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets.coil +package press.mantra.compose.ui.composable.widgets.coil import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.graphics.DefaultAlpha diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/ArticleCard.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/ArticleCard.kt similarity index 96% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/ArticleCard.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/ArticleCard.kt index a3d25581..94eccf24 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/ArticleCard.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/ArticleCard.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets.content +package press.mantra.compose.ui.composable.widgets.content import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.clickable @@ -23,7 +23,7 @@ import androidx.compose.ui.unit.dp @Composable private fun ArticleCard( - localNostrEvent: at.torch.compose.database.model.intermdiate.LocalNostrEvent, + localNostrEvent: press.mantra.compose.database.model.intermdiate.LocalNostrEvent, dTag: String, author: String, relayHints: List, @@ -125,7 +125,7 @@ private fun ArticleCard( verticalAlignment = Alignment.CenterVertically, modifier = Modifier.padding(top = 6.dp) ) { - _root_ide_package_.at.torch.compose.ui.composable.widgets.profile.ProfileAvatar( + _root_ide_package_.press.mantra.compose.ui.composable.widgets.profile.ProfileAvatar( profile = profile, publicKey = localNostrEvent.nostrEvent.pubKey, size = 20.dp diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/Constants.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/Constants.kt similarity index 97% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/Constants.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/Constants.kt index 7b4c9cb2..ba8e463c 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/Constants.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/Constants.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets.content +package press.mantra.compose.ui.composable.widgets.content import androidx.collection.LruCache diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/ContentParser.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/ContentParser.kt similarity index 99% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/ContentParser.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/ContentParser.kt index 78c6545c..90b9ffa7 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/ContentParser.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/ContentParser.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets.content +package press.mantra.compose.ui.composable.widgets.content import com.vitorpamplona.quartz.nip19Bech32.Nip19Parser import com.vitorpamplona.quartz.nip19Bech32.entities.NAddress diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/ContentSegment.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/ContentSegment.kt similarity index 98% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/ContentSegment.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/ContentSegment.kt index ea670072..f9d0812f 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/ContentSegment.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/ContentSegment.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets.content +package press.mantra.compose.ui.composable.widgets.content import com.vitorpamplona.quartz.nip01Core.relay.normalizer.normalizeRelayUrl import com.vitorpamplona.quartz.nip19Bech32.entities.NAddress diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/FullScreenImageViewer.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/FullScreenImageViewer.kt similarity index 98% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/FullScreenImageViewer.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/FullScreenImageViewer.kt index cd29f5da..40709553 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/FullScreenImageViewer.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/FullScreenImageViewer.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets.content +package press.mantra.compose.ui.composable.widgets.content import androidx.compose.foundation.background import androidx.compose.foundation.clickable diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/Helpers.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/Helpers.kt similarity index 97% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/Helpers.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/Helpers.kt index fc754980..a9be78eb 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/Helpers.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/Helpers.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets.content +package press.mantra.compose.ui.composable.widgets.content import com.vitorpamplona.quartz.nip68Picture.PictureEvent import com.vitorpamplona.quartz.nip71Video.VideoNormalEvent @@ -159,7 +159,7 @@ internal object Helpers { // } } - fun isGalleryEvent(event: at.torch.compose.database.model.NostrEvent): Boolean = event.kind in arrayOf( + fun isGalleryEvent(event: press.mantra.compose.database.model.NostrEvent): Boolean = event.kind in arrayOf( PictureEvent.KIND, VideoNormalEvent.KIND, VideoShortEvent.KIND diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/ImageWithContextMenu.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/ImageWithContextMenu.kt similarity index 98% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/ImageWithContextMenu.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/ImageWithContextMenu.kt index 0df5a4b6..cf03212d 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/ImageWithContextMenu.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/ImageWithContextMenu.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets.content +package press.mantra.compose.ui.composable.widgets.content import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.clickable diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/InvoicePayState.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/InvoicePayState.kt similarity index 54% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/InvoicePayState.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/InvoicePayState.kt index 173c3435..d55df568 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/InvoicePayState.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/InvoicePayState.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets.content +package press.mantra.compose.ui.composable.widgets.content internal enum class InvoicePayState { Idle, Paying, Success, Failed diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/LightningInvoiceCard.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/LightningInvoiceCard.kt similarity index 99% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/LightningInvoiceCard.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/LightningInvoiceCard.kt index 00f87e07..ac185e3a 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/LightningInvoiceCard.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/LightningInvoiceCard.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets.content +package press.mantra.compose.ui.composable.widgets.content import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.layout.Column diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/LinkPreview.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/LinkPreview.kt similarity index 98% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/LinkPreview.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/LinkPreview.kt index f16530de..eb2d93d7 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/LinkPreview.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/LinkPreview.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets.content +package press.mantra.compose.ui.composable.widgets.content import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.clickable diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/LiveStreamCard.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/LiveStreamCard.kt similarity index 94% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/LiveStreamCard.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/LiveStreamCard.kt index 717cd21c..e25166da 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/LiveStreamCard.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/LiveStreamCard.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets.content +package press.mantra.compose.ui.composable.widgets.content import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.clickable @@ -14,7 +14,7 @@ import androidx.compose.ui.unit.dp @Composable private fun LiveStreamCard( - localNostrEvent: at.torch.compose.database.model.intermdiate.LocalNostrEvent, + localNostrEvent: press.mantra.compose.database.model.intermdiate.LocalNostrEvent, dTag: String, author: String, relayHints: List, diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/LiveStreamCardContent.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/LiveStreamCardContent.kt similarity index 95% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/LiveStreamCardContent.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/LiveStreamCardContent.kt index 780e491d..c7136fe9 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/LiveStreamCardContent.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/LiveStreamCardContent.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets.content +package press.mantra.compose.ui.composable.widgets.content import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column @@ -21,13 +21,13 @@ import androidx.compose.ui.unit.dp @Composable internal fun LiveStreamCardContent( - event: at.torch.compose.database.model.NostrEvent?, + event: press.mantra.compose.database.model.NostrEvent?, streamUrl: String?, image: String?, title: String?, summary: String?, status: String?, - profile: at.torch.compose.database.model.Profile?, + profile: press.mantra.compose.database.model.Profile?, author: String, onProfileClick: ((String) -> Unit)? ) { @@ -130,7 +130,7 @@ internal fun LiveStreamCardContent( verticalAlignment = Alignment.CenterVertically, modifier = Modifier.padding(top = 6.dp) ) { - _root_ide_package_.at.torch.compose.ui.composable.widgets.profile.ProfileAvatar( + _root_ide_package_.press.mantra.compose.ui.composable.widgets.profile.ProfileAvatar( profile = profile, publicKey = event.pubKey, size = 20.dp diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/LoadingAsyncImage.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/LoadingAsyncImage.kt similarity index 97% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/LoadingAsyncImage.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/LoadingAsyncImage.kt index ed26a8c2..b64475c0 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/LoadingAsyncImage.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/LoadingAsyncImage.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets.content +package press.mantra.compose.ui.composable.widgets.content import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.combinedClickable diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/MediaMeta.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/MediaMeta.kt similarity index 70% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/MediaMeta.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/MediaMeta.kt index 8437314f..7e9b7695 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/MediaMeta.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/MediaMeta.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets.content +package press.mantra.compose.ui.composable.widgets.content data class MediaMeta( val url: String, diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/NoteActions.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/NoteActions.kt similarity index 93% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/NoteActions.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/NoteActions.kt index 093a0b48..cd6f09f4 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/NoteActions.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/NoteActions.kt @@ -1,6 +1,6 @@ -package at.torch.compose.ui.composable.widgets.content +package press.mantra.compose.ui.composable.widgets.content -import at.torch.compose.database.model.NostrEvent +import press.mantra.compose.database.model.NostrEvent data class NoteActions( val onReply: (NostrEvent) -> Unit = {}, diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/OgData.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/OgData.kt similarity index 69% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/OgData.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/OgData.kt index 8b2dc7cd..5d501979 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/OgData.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/OgData.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets.content +package press.mantra.compose.ui.composable.widgets.content internal data class OgData( val title: String?, diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/QuotedAddressableNote.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/QuotedAddressableNote.kt similarity index 93% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/QuotedAddressableNote.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/QuotedAddressableNote.kt index 5f6348a9..62e7f568 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/QuotedAddressableNote.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/QuotedAddressableNote.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets.content +package press.mantra.compose.ui.composable.widgets.content import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.layout.Row @@ -21,7 +21,7 @@ import androidx.compose.ui.unit.dp @Composable internal fun QuotedAddressableNote( - localQuotedNostrEvent: at.torch.compose.database.model.intermdiate.LocalQuotedNostrEvent?, + localQuotedNostrEvent: press.mantra.compose.database.model.intermdiate.LocalQuotedNostrEvent?, kind: Int, dTag: String, author: String, diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/QuotedNote.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/QuotedNote.kt similarity index 89% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/QuotedNote.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/QuotedNote.kt index 288ec69c..086db724 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/QuotedNote.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/QuotedNote.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets.content +package press.mantra.compose.ui.composable.widgets.content import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.clickable @@ -22,7 +22,7 @@ import com.vitorpamplona.quartz.nip01Core.core.HexKey @Composable fun QuotedNote( - localQuotedNostrEvent: at.torch.compose.database.model.intermdiate.LocalQuotedNostrEvent? = null, + localQuotedNostrEvent: press.mantra.compose.database.model.intermdiate.LocalQuotedNostrEvent? = null, onNavigateToEvent:(HexKey) -> Unit, noteActions: NoteActions? = null ) { @@ -114,14 +114,14 @@ fun QuotedNote( @Preview @Composable private fun QuotedNotePreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + _root_ide_package_.press.mantra.compose.ui.theme.TorchTheme { Surface( modifier = Modifier.padding(20.dp) ) { QuotedNote( - localQuotedNostrEvent = _root_ide_package_.at.torch.compose.database.model.intermdiate.LocalQuotedNostrEvent( - nostrEvent = _root_ide_package_.at.torch.compose.database.model.NostrEvent( + localQuotedNostrEvent = _root_ide_package_.press.mantra.compose.database.model.intermdiate.LocalQuotedNostrEvent( + nostrEvent = _root_ide_package_.press.mantra.compose.database.model.NostrEvent( id = "1c7213118d4e17c6bad5c6b11125f005619bc3e43374affb9cd6483f665fd5e6", content = "God is not in the habit of coming down from heaven to solve people’s problems on earth.", pubKey = "e5e3ad0272d1fbeead8e439a4ad3453374ca4969c8d2be84025ba4ef8ae5a522", @@ -129,12 +129,12 @@ private fun QuotedNotePreview() { sig = "hexsig", tags = emptyArray() ), - quotedRelation = _root_ide_package_.at.torch.compose.database.model.QuotedRelation( + quotedRelation = _root_ide_package_.press.mantra.compose.database.model.QuotedRelation( quotingNostrEventId = "e5e3ad0272d1fbeead8e439a4ad3453374ca4969c8d2be84025ba4ef8ae5a520", quotedProfilePublicKey = "e5e3ad0272d1fbeead8e439a4ad3453374ca4969c8d2be84025ba4ef8ae5a522", quotedNostrEventId = "1c7213118d4e17c6bad5c6b11125f005619bc3e43374affb9cd6483f665fd5e6" ), - profile = _root_ide_package_.at.torch.compose.database.model.Profile( + profile = _root_ide_package_.press.mantra.compose.database.model.Profile( publicKey = "e5e3ad0272d1fbeead8e439a4ad3453374ca4969c8d2be84025ba4ef8ae5a522", nostrEventId = "referenced", displayName = "Steve Biko" diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/RichContent.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/RichContent.kt similarity index 94% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/RichContent.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/RichContent.kt index 3a6bbc46..b63231b5 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/RichContent.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/RichContent.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets.content +package press.mantra.compose.ui.composable.widgets.content import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize @@ -34,9 +34,9 @@ import com.vitorpamplona.quartz.nip01Core.core.HexKey @Composable fun RichContent( - nostrEvent: at.torch.compose.database.model.NostrEvent, - localQuotedNostrEvent: at.torch.compose.database.model.intermdiate.LocalQuotedNostrEvent?, - mentionedProfiles: List, + nostrEvent: press.mantra.compose.database.model.NostrEvent, + localQuotedNostrEvent: press.mantra.compose.database.model.intermdiate.LocalQuotedNostrEvent?, + mentionedProfiles: List, style: TextStyle = MaterialTheme.typography.bodyLarge, color: Color = MaterialTheme.colorScheme.onSurface, linkColor: Color = Color.Unspecified, @@ -197,7 +197,7 @@ fun RichContent( onProfileClick?.invoke(pubkey) } ) { - withStyle(SpanStyle(color = at.torch.compose.ui.composable.widgets.profile.ProfileColor.fromPublicKey(seg.pubkey), textDecoration = linkDecoration)) { + withStyle(SpanStyle(color = press.mantra.compose.ui.composable.widgets.profile.ProfileColor.fromPublicKey(seg.pubkey), textDecoration = linkDecoration)) { append("@${displayName.trimEnd()}") } } @@ -396,7 +396,7 @@ fun RichContent( @Preview @Composable private fun RichContentPreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + _root_ide_package_.press.mantra.compose.ui.theme.TorchTheme { Surface( modifier = Modifier.padding(20.dp) ) { @@ -405,7 +405,7 @@ private fun RichContentPreview() { ) { RichContent( modifier = Modifier.padding(10.dp), - nostrEvent = _root_ide_package_.at.torch.compose.database.model.NostrEvent( + nostrEvent = _root_ide_package_.press.mantra.compose.database.model.NostrEvent( id = "e5e3ad0272d1fbeead8e439a4ad3453374ca4969c8d2be84025ba4ef8ae5a520", content = "Something something something nostr:npub1uh366qnj68a7atvwgwdy4569xd6v5jtferftapqztwjwlzh9553q47pqsx\nhttps://www.brainyquote.com/authors/steven-biko-quotes\nnostr:nevent1qqspcusnzxx5u97xht2udvg3yhcq2cvmc0jrxa90lwwdvjplve0atespzpmhxue69uhkummnw3ezuamfdejsyg8h5g639qhuv803hzwexfwhyud6t6suxfu364anddqvrmn9j4cahvxksr8q", pubKey = "e5e3ad0272d1fbeead8e439a4ad3453374ca4969c8d2be84025ba4ef8ae5a522", @@ -413,8 +413,8 @@ private fun RichContentPreview() { sig = "hexsig", tags = emptyArray() ), - localQuotedNostrEvent = _root_ide_package_.at.torch.compose.database.model.intermdiate.LocalQuotedNostrEvent( - nostrEvent = _root_ide_package_.at.torch.compose.database.model.NostrEvent( + localQuotedNostrEvent = _root_ide_package_.press.mantra.compose.database.model.intermdiate.LocalQuotedNostrEvent( + nostrEvent = _root_ide_package_.press.mantra.compose.database.model.NostrEvent( id = "1c7213118d4e17c6bad5c6b11125f005619bc3e43374affb9cd6483f665fd5e6", content = "God is not in the habit of coming down from heaven to solve people’s problems on earth.", pubKey = "e5e3ad0272d1fbeead8e439a4ad3453374ca4969c8d2be84025ba4ef8ae5a522", @@ -422,24 +422,24 @@ private fun RichContentPreview() { sig = "hexsig", tags = emptyArray() ), - quotedRelation = _root_ide_package_.at.torch.compose.database.model.QuotedRelation( + quotedRelation = _root_ide_package_.press.mantra.compose.database.model.QuotedRelation( quotingNostrEventId = "e5e3ad0272d1fbeead8e439a4ad3453374ca4969c8d2be84025ba4ef8ae5a520", quotedProfilePublicKey = "e5e3ad0272d1fbeead8e439a4ad3453374ca4969c8d2be84025ba4ef8ae5a522", quotedNostrEventId = "1c7213118d4e17c6bad5c6b11125f005619bc3e43374affb9cd6483f665fd5e6" ), - profile = _root_ide_package_.at.torch.compose.database.model.Profile( + profile = _root_ide_package_.press.mantra.compose.database.model.Profile( publicKey = "e5e3ad0272d1fbeead8e439a4ad3453374ca4969c8d2be84025ba4ef8ae5a522", nostrEventId = "referenced", displayName = "Steve Biko" ), ), mentionedProfiles = listOf( - _root_ide_package_.at.torch.compose.database.model.intermdiate.LocalMention( - mention = _root_ide_package_.at.torch.compose.database.model.Mention( + _root_ide_package_.press.mantra.compose.database.model.intermdiate.LocalMention( + mention = _root_ide_package_.press.mantra.compose.database.model.Mention( id = 1, mentionedPublicKey = "e5e3ad0272d1fbeead8e439a4ad3453374ca4969c8d2be84025ba4ef8ae5a522", ), - profile = _root_ide_package_.at.torch.compose.database.model.Profile( + profile = _root_ide_package_.press.mantra.compose.database.model.Profile( publicKey = "e5e3ad0272d1fbeead8e439a4ad3453374ca4969c8d2be84025ba4ef8ae5a522", nostrEventId = "referenced", displayName = "Frank Talk" diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/UnsupportedKindBadge.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/UnsupportedKindBadge.kt similarity index 95% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/UnsupportedKindBadge.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/UnsupportedKindBadge.kt index 4ee78352..52fc620b 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/content/UnsupportedKindBadge.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/content/UnsupportedKindBadge.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets.content +package press.mantra.compose.ui.composable.widgets.content import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.layout.fillMaxWidth diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/detail/MetadataEventDetail.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/detail/MetadataEventDetail.kt similarity index 94% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/detail/MetadataEventDetail.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/detail/MetadataEventDetail.kt index 3578623c..0e233fd7 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/detail/MetadataEventDetail.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/detail/MetadataEventDetail.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets.detail +package press.mantra.compose.ui.composable.widgets.detail import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -43,18 +43,18 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel -import at.torch.compose.database.model.NostrEvent -import at.torch.compose.database.model.Profile -import at.torch.compose.database.model.intermdiate.LocalNostrEvent -import at.torch.compose.repository.NostrRepository -import at.torch.compose.ui.composable.navigation.routes.ChatRoomMessagingRoute -import at.torch.compose.ui.composable.navigation.routes.ImplementationPendingRoute -import at.torch.compose.ui.composable.navigation.routes.Route -import at.torch.compose.ui.composable.widgets.profile.ProfileAvatar -import at.torch.compose.ui.theme.TorchTheme -import at.torch.compose.ui.view.model.MetadataEventDetailType -import at.torch.compose.ui.view.model.MetadataEventDetailViewModel -import at.torch.compose.ui.view.state.MetadataEventDetailUIState +import press.mantra.compose.database.model.NostrEvent +import press.mantra.compose.database.model.Profile +import press.mantra.compose.database.model.intermdiate.LocalNostrEvent +import press.mantra.compose.repository.NostrRepository +import press.mantra.compose.ui.composable.navigation.routes.ChatRoomMessagingRoute +import press.mantra.compose.ui.composable.navigation.routes.ImplementationPendingRoute +import press.mantra.compose.ui.composable.navigation.routes.Route +import press.mantra.compose.ui.composable.widgets.profile.ProfileAvatar +import press.mantra.compose.ui.theme.TorchTheme +import press.mantra.compose.ui.view.model.MetadataEventDetailType +import press.mantra.compose.ui.view.model.MetadataEventDetailViewModel +import press.mantra.compose.ui.view.state.MetadataEventDetailUIState import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.metadata.MetadataEvent diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/detail/TextNoteEventDetail.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/detail/TextNoteEventDetail.kt similarity index 90% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/detail/TextNoteEventDetail.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/detail/TextNoteEventDetail.kt index 39a5bcb5..518bd386 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/detail/TextNoteEventDetail.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/detail/TextNoteEventDetail.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets.detail +package press.mantra.compose.ui.composable.widgets.detail import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement @@ -44,27 +44,27 @@ import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel -import at.torch.compose.extensions.toFormattedTimeAndDateString +import press.mantra.compose.extensions.toFormattedTimeAndDateString import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip10Notes.TextNoteEvent @OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterial3ExpressiveApi::class) @Composable fun TextNoteEventDetail( - localNostrEvent: at.torch.compose.database.model.intermdiate.LocalNostrEvent, + localNostrEvent: press.mantra.compose.database.model.intermdiate.LocalNostrEvent, onNavigateBack: () -> Unit, - nostrRepository: at.torch.compose.repository.NostrRepository, + nostrRepository: press.mantra.compose.repository.NostrRepository, onNavigateToWriteAReply: (String) -> Unit, onNavigateToNostrEvent: (HexKey) -> Unit, ) { val scrollBehavior = BottomAppBarDefaults.exitAlwaysScrollBehavior() - val inReplyToNostrEventFeedListViewModel: at.torch.compose.ui.view.model.InReplyToViewModel = viewModel( + val inReplyToNostrEventFeedListViewModel: press.mantra.compose.ui.view.model.InReplyToViewModel = viewModel( key = "replies-${localNostrEvent.nostrEvent.id}", - factory = at.torch.compose.ui.view.model.InReplyToViewModel.factory( + factory = press.mantra.compose.ui.view.model.InReplyToViewModel.factory( nostrEvent = localNostrEvent.nostrEvent, profile = localNostrEvent.profile, - initialFeedListUIState = at.torch.compose.ui.view.state.FeedListUIState.Loading, + initialFeedListUIState = press.mantra.compose.ui.view.state.FeedListUIState.Loading, nostrRepository = nostrRepository, createdAt = localNostrEvent.nostrEvent.createdAt ), @@ -118,7 +118,7 @@ fun TextNoteEventDetail( Icon( Icons.Default.Person, contentDescription = "User profile", - tint = at.torch.compose.ui.composable.widgets.profile.ProfileColor.fromPublicKey("profile") + tint = press.mantra.compose.ui.composable.widgets.profile.ProfileColor.fromPublicKey("profile") ) // ProfileAvatar( // profile = localProfile.profile, @@ -202,7 +202,7 @@ fun TextNoteEventDetail( ) { val profile = localNostrEvent.profile - _root_ide_package_.at.torch.compose.ui.composable.widgets.profile.ProfileAvatar( + _root_ide_package_.press.mantra.compose.ui.composable.widgets.profile.ProfileAvatar( profile = localNostrEvent.profile, publicKey = localNostrEvent.nostrEvent.pubKey ) @@ -219,7 +219,7 @@ fun TextNoteEventDetail( Text( text = staticIdentifier, style = MaterialTheme.typography.labelMedium, - color = at.torch.compose.ui.composable.widgets.profile.ProfileColor.fromProfile( + color = press.mantra.compose.ui.composable.widgets.profile.ProfileColor.fromProfile( profile ) ) @@ -249,7 +249,7 @@ fun TextNoteEventDetail( } } - _root_ide_package_.at.torch.compose.ui.composable.widgets.content.RichContent( + _root_ide_package_.press.mantra.compose.ui.composable.widgets.content.RichContent( modifier = Modifier.fillMaxWidth().padding( horizontal = 20.dp ), @@ -336,7 +336,7 @@ fun TextNoteEventDetail( } when (val inReplyToFeedListUIState = inReplyToNostrEventFeedListViewModel.inReplyToFeedListUIState) { - is at.torch.compose.ui.view.state.FeedListUIState.Loaded -> { + is press.mantra.compose.ui.view.state.FeedListUIState.Loaded -> { if (inReplyToFeedListUIState.localNostrEvents.isEmpty()) { item { Text( @@ -354,14 +354,14 @@ fun TextNoteEventDetail( } } } - at.torch.compose.ui.view.state.FeedListUIState.Error -> { + press.mantra.compose.ui.view.state.FeedListUIState.Error -> { item { Text( text = "Something went wrong" ) } } - at.torch.compose.ui.view.state.FeedListUIState.Loading -> { + press.mantra.compose.ui.view.state.FeedListUIState.Loading -> { item { LoadingIndicator() } @@ -380,13 +380,13 @@ fun TextNoteEventDetail( @Composable private fun TextNoteEventDetailPreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + _root_ide_package_.press.mantra.compose.ui.theme.TorchTheme { Surface( modifier = Modifier.padding(20.dp) ) { TextNoteEventDetail( - localNostrEvent = _root_ide_package_.at.torch.compose.database.model.intermdiate.LocalNostrEvent( - nostrEvent = _root_ide_package_.at.torch.compose.database.model.NostrEvent( + localNostrEvent = _root_ide_package_.press.mantra.compose.database.model.intermdiate.LocalNostrEvent( + nostrEvent = _root_ide_package_.press.mantra.compose.database.model.NostrEvent( id = "eventId", pubKey = "publicKey", content = """Lorem Ipsum is simply dummy text of the printing and typesetting industry. @@ -398,7 +398,7 @@ It has survived not only five centuries, but also the leap into electronic types sig = "", kind = TextNoteEvent.KIND ), - profile = _root_ide_package_.at.torch.compose.database.model.Profile( + profile = _root_ide_package_.press.mantra.compose.database.model.Profile( publicKey = "pubKey", displayName = "John Doe", nip05 = "john@doe.me", @@ -408,7 +408,7 @@ It has survived not only five centuries, but also the leap into electronic types onNavigateBack = {}, onNavigateToWriteAReply = {}, onNavigateToNostrEvent = {}, - nostrRepository = at.torch.compose.repository.NostrRepository.NO_OP_NOSTR_REPOSITORY + nostrRepository = press.mantra.compose.repository.NostrRepository.NO_OP_NOSTR_REPOSITORY ) } } diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/dialogs/BottomSheetDialog.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/dialogs/BottomSheetDialog.kt similarity index 98% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/dialogs/BottomSheetDialog.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/dialogs/BottomSheetDialog.kt index 9a65850a..e9270375 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/dialogs/BottomSheetDialog.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/dialogs/BottomSheetDialog.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package at.torch.compose.ui.composable.widgets.dialogs +package press.mantra.compose.ui.composable.widgets.dialogs import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ColumnScope diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/dialogs/NewChatBottomSheetDialog.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/dialogs/NewChatBottomSheetDialog.kt similarity index 95% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/dialogs/NewChatBottomSheetDialog.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/dialogs/NewChatBottomSheetDialog.kt index 447b5f5b..7f193c47 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/dialogs/NewChatBottomSheetDialog.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/dialogs/NewChatBottomSheetDialog.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets.dialogs +package press.mantra.compose.ui.composable.widgets.dialogs import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -25,8 +25,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp -import at.torch.compose.ui.composable.navigation.routes.ImplementationPendingRoute -import at.torch.compose.ui.composable.navigation.routes.Route +import press.mantra.compose.ui.composable.navigation.routes.Route import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/dialogs/StartDirectMessageToNpubOrNip05Dialog.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/dialogs/StartDirectMessageToNpubOrNip05Dialog.kt similarity index 94% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/dialogs/StartDirectMessageToNpubOrNip05Dialog.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/dialogs/StartDirectMessageToNpubOrNip05Dialog.kt index d6260381..7c7b93fc 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/dialogs/StartDirectMessageToNpubOrNip05Dialog.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/dialogs/StartDirectMessageToNpubOrNip05Dialog.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets.dialogs +package press.mantra.compose.ui.composable.widgets.dialogs import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -33,11 +33,11 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog -import at.torch.compose.extensions.bech32ToHexOrNull -import at.torch.compose.ui.composable.navigation.routes.ChatRoomMessagingRoute -import at.torch.compose.ui.composable.navigation.routes.ImplementationPendingRoute -import at.torch.compose.ui.composable.navigation.routes.Route -import at.torch.compose.ui.theme.TorchTheme +import press.mantra.compose.extensions.bech32ToHexOrNull +import press.mantra.compose.ui.composable.navigation.routes.ChatRoomMessagingRoute +import press.mantra.compose.ui.composable.navigation.routes.ImplementationPendingRoute +import press.mantra.compose.ui.composable.navigation.routes.Route +import press.mantra.compose.ui.theme.TorchTheme import com.vitorpamplona.quartz.nip01Core.core.HexKey import fr.acinq.phoenix.utils.Parser import kotlinx.coroutines.CoroutineScope diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/feed/EventListView.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/feed/EventListView.kt similarity index 81% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/feed/EventListView.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/feed/EventListView.kt index 7dff75de..768aa9f2 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/feed/EventListView.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/feed/EventListView.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets.feed +package press.mantra.compose.ui.composable.widgets.feed import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement @@ -18,14 +18,14 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import at.torch.compose.extensions.toFormattedTimeAndDateString +import press.mantra.compose.extensions.toFormattedTimeAndDateString import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip10Notes.TextNoteEvent import com.vitorpamplona.quartz.nip18Reposts.RepostEvent import kotlin.time.Instant @Composable -fun at.torch.compose.database.model.intermdiate.LocalNostrEvent.ListView( +fun press.mantra.compose.database.model.intermdiate.LocalNostrEvent.ListView( onNavigateToEvent: (HexKey) -> Unit ) { when (nostrEvent.kind) { @@ -60,7 +60,7 @@ fun at.torch.compose.database.model.intermdiate.LocalNostrEvent.ListView( Text( text = profile?.humanReadableNameOrPubkey() ?: nostrEvent.pubKey, style = MaterialTheme.typography.labelSmall, - color = at.torch.compose.ui.composable.widgets.profile.ProfileColor.fromPublicKey(profile?.publicKey ?: nostrEvent.pubKey) + color = press.mantra.compose.ui.composable.widgets.profile.ProfileColor.fromPublicKey(profile?.publicKey ?: nostrEvent.pubKey) ) Text( text = "reposted", @@ -121,12 +121,12 @@ fun at.torch.compose.database.model.intermdiate.LocalNostrEvent.ListView( @Preview @Composable private fun EventListViewRepostedPreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + _root_ide_package_.press.mantra.compose.ui.theme.TorchTheme { Surface( modifier = Modifier.padding(20.dp) ) { - _root_ide_package_.at.torch.compose.database.model.intermdiate.LocalNostrEvent( - nostrEvent = _root_ide_package_.at.torch.compose.database.model.NostrEvent( + _root_ide_package_.press.mantra.compose.database.model.intermdiate.LocalNostrEvent( + nostrEvent = _root_ide_package_.press.mantra.compose.database.model.NostrEvent( id = "hex", content = "Reposting", pubKey = "hexpubkeypubkeypubkeypubkey", @@ -134,13 +134,13 @@ private fun EventListViewRepostedPreview() { sig = "hexsig", tags = emptyArray() ), - localRepostedNostrEvent = _root_ide_package_.at.torch.compose.database.model.intermdiate.LocalRepostedNostrEvent( - repostedRelation = _root_ide_package_.at.torch.compose.database.model.RepostedRelation( + localRepostedNostrEvent = _root_ide_package_.press.mantra.compose.database.model.intermdiate.LocalRepostedNostrEvent( + repostedRelation = _root_ide_package_.press.mantra.compose.database.model.RepostedRelation( repostingNostrEventId = "hex", repostedNostrEventId = "repostedhex", repostedProfilePublicKey = "reposterHex" ), - nostrEvent = _root_ide_package_.at.torch.compose.database.model.NostrEvent( + nostrEvent = _root_ide_package_.press.mantra.compose.database.model.NostrEvent( id = "hex", content = "Something something something", pubKey = "hexpubkeypubkeypubkeypubkey", @@ -148,7 +148,7 @@ private fun EventListViewRepostedPreview() { sig = "hexsig", tags = emptyArray() ), - profile = _root_ide_package_.at.torch.compose.database.model.Profile( + profile = _root_ide_package_.press.mantra.compose.database.model.Profile( publicKey = "hesd", nostrEventId = "referenced", displayName = "Frank Talk", @@ -156,7 +156,7 @@ private fun EventListViewRepostedPreview() { ), mentionedProfiles = emptyList() ), - profile = _root_ide_package_.at.torch.compose.database.model.Profile( + profile = _root_ide_package_.press.mantra.compose.database.model.Profile( publicKey = "", nostrEventId = "referenced", displayName = "Steve Biko", @@ -172,12 +172,12 @@ private fun EventListViewRepostedPreview() { @Preview @Composable private fun EventListViewInReplyPreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + _root_ide_package_.press.mantra.compose.ui.theme.TorchTheme { Surface( modifier = Modifier.padding(20.dp) ) { - _root_ide_package_.at.torch.compose.database.model.intermdiate.LocalNostrEvent( - nostrEvent = _root_ide_package_.at.torch.compose.database.model.NostrEvent( + _root_ide_package_.press.mantra.compose.database.model.intermdiate.LocalNostrEvent( + nostrEvent = _root_ide_package_.press.mantra.compose.database.model.NostrEvent( id = "hex", content = "Reposting", pubKey = "hexpubkeypubkeypubkeypubkey", @@ -185,15 +185,15 @@ private fun EventListViewInReplyPreview() { sig = "hexsig", tags = emptyArray() ), - localInReplyToNostrEvent = _root_ide_package_.at.torch.compose.database.model.intermdiate.LocalInReplyToNostrEvent( - inReplyToRelation = _root_ide_package_.at.torch.compose.database.model.InReplyToRelation( + localInReplyToNostrEvent = _root_ide_package_.press.mantra.compose.database.model.intermdiate.LocalInReplyToNostrEvent( + inReplyToRelation = _root_ide_package_.press.mantra.compose.database.model.InReplyToRelation( inReplyToNostrEventId = "nostrEvent", inReplyToRootNostrEventId = "rootId", inReplyToProfilePublicKey = "inReplyToProfileKey", inReplyToRootProfilePublicKey = "rootPubKey", replyingNostrEventId = "hex" ), - nostrEvent = _root_ide_package_.at.torch.compose.database.model.NostrEvent( + nostrEvent = _root_ide_package_.press.mantra.compose.database.model.NostrEvent( id = "hex", content = "Something something something", pubKey = "hexpubkeypubkeypubkeypubkey", @@ -201,7 +201,7 @@ private fun EventListViewInReplyPreview() { sig = "hexsig", tags = emptyArray() ), - profile = _root_ide_package_.at.torch.compose.database.model.Profile( + profile = _root_ide_package_.press.mantra.compose.database.model.Profile( publicKey = "hesd", nostrEventId = "referenced", displayName = "Frank Talk", @@ -209,7 +209,7 @@ private fun EventListViewInReplyPreview() { ), mentionedProfiles = emptyList() ), - profile = _root_ide_package_.at.torch.compose.database.model.Profile( + profile = _root_ide_package_.press.mantra.compose.database.model.Profile( publicKey = "", nostrEventId = "referenced", displayName = "Steve Biko", diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/feed/TextNoteFeedItem.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/feed/TextNoteFeedItem.kt similarity index 80% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/feed/TextNoteFeedItem.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/feed/TextNoteFeedItem.kt index e8bf10d6..34001fea 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/feed/TextNoteFeedItem.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/feed/TextNoteFeedItem.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets.feed +package press.mantra.compose.ui.composable.widgets.feed import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement @@ -22,17 +22,17 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import at.torch.compose.extensions.toFormattedTimeAndDateString +import press.mantra.compose.extensions.toFormattedTimeAndDateString import com.vitorpamplona.quartz.nip01Core.core.HexKey @OptIn(ExperimentalMaterial3ExpressiveApi::class) @Composable internal fun TextNoteFeedItem( - nostrEvent: at.torch.compose.database.model.NostrEvent, - profile: at.torch.compose.database.model.Profile?, - localInReplyToNostrEvent: at.torch.compose.database.model.intermdiate.LocalInReplyToNostrEvent?, - localQuotedNostrEvent: at.torch.compose.database.model.intermdiate.LocalQuotedNostrEvent?, - mentionedProfiles: List, + nostrEvent: press.mantra.compose.database.model.NostrEvent, + profile: press.mantra.compose.database.model.Profile?, + localInReplyToNostrEvent: press.mantra.compose.database.model.intermdiate.LocalInReplyToNostrEvent?, + localQuotedNostrEvent: press.mantra.compose.database.model.intermdiate.LocalQuotedNostrEvent?, + mentionedProfiles: List, onNavigateToEvent: (HexKey) -> Unit ) { val expended = mutableStateOf(false) @@ -59,7 +59,7 @@ internal fun TextNoteFeedItem( } ), style = MaterialTheme.typography.labelLargeEmphasized, - color = at.torch.compose.ui.composable.widgets.profile.ProfileColor.fromPublicKey(localInReplyToNostrEvent.nostrEvent.pubKey), + color = press.mantra.compose.ui.composable.widgets.profile.ProfileColor.fromPublicKey(localInReplyToNostrEvent.nostrEvent.pubKey), text = localInReplyToNostrEvent.profile?.humanReadableNameOrPubkey() ?: "loading information..." ) } @@ -88,7 +88,7 @@ internal fun TextNoteFeedItem( horizontalArrangement = Arrangement.spacedBy(10.dp, Alignment.Start), verticalAlignment = Alignment.CenterVertically ) { - _root_ide_package_.at.torch.compose.ui.composable.widgets.profile.ProfileAvatar( + _root_ide_package_.press.mantra.compose.ui.composable.widgets.profile.ProfileAvatar( publicKey = nostrEvent.pubKey, profile = profile ) @@ -105,7 +105,7 @@ internal fun TextNoteFeedItem( Text( text = staticIdentifier, style = MaterialTheme.typography.bodySmall, - color = at.torch.compose.ui.composable.widgets.profile.ProfileColor.fromProfile(profile) + color = press.mantra.compose.ui.composable.widgets.profile.ProfileColor.fromProfile(profile) ) } } @@ -116,7 +116,7 @@ internal fun TextNoteFeedItem( ) } - _root_ide_package_.at.torch.compose.ui.composable.widgets.content.RichContent( + _root_ide_package_.press.mantra.compose.ui.composable.widgets.content.RichContent( modifier = Modifier.fillMaxWidth(), nostrEvent = nostrEvent, localQuotedNostrEvent = localQuotedNostrEvent, @@ -179,12 +179,12 @@ internal fun TextNoteFeedItem( @Preview @Composable private fun TextNoteFeedItemPreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + _root_ide_package_.press.mantra.compose.ui.theme.TorchTheme { Surface( modifier = Modifier.padding(20.dp) ) { TextNoteFeedItem( - nostrEvent = _root_ide_package_.at.torch.compose.database.model.NostrEvent( + nostrEvent = _root_ide_package_.press.mantra.compose.database.model.NostrEvent( id = "hex", content = "You are either alive and proud or you are dead, and when you are dead, you can't care anyway. https://www.brainyquote.com/authors/steven-biko-quotes", pubKey = "hexpubkeypubkeypubkeypubkey", @@ -192,7 +192,7 @@ private fun TextNoteFeedItemPreview() { sig = "hexsig", tags = emptyArray() ), - profile = _root_ide_package_.at.torch.compose.database.model.Profile( + profile = _root_ide_package_.press.mantra.compose.database.model.Profile( publicKey = "", nostrEventId = "referenced", displayName = "Frank Talk", @@ -210,12 +210,12 @@ private fun TextNoteFeedItemPreview() { @Preview @Composable private fun TextNoteFeedItemInReplyToPreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + _root_ide_package_.press.mantra.compose.ui.theme.TorchTheme { Surface( modifier = Modifier.padding(20.dp) ) { TextNoteFeedItem( - nostrEvent = _root_ide_package_.at.torch.compose.database.model.NostrEvent( + nostrEvent = _root_ide_package_.press.mantra.compose.database.model.NostrEvent( id = "hex", content = "It is better to die for an idea that will live, than to live for an idea that will die", pubKey = "hexpubkeypubkeypubkeypubkey", @@ -223,22 +223,22 @@ private fun TextNoteFeedItemInReplyToPreview() { sig = "hexsig", tags = emptyArray() ), - profile = _root_ide_package_.at.torch.compose.database.model.Profile( + profile = _root_ide_package_.press.mantra.compose.database.model.Profile( publicKey = "", nostrEventId = "referenced", displayName = "Frank Talk", nip05 = "frank@talk.at" ), localQuotedNostrEvent = null, - localInReplyToNostrEvent = _root_ide_package_.at.torch.compose.database.model.intermdiate.LocalInReplyToNostrEvent( - inReplyToRelation = _root_ide_package_.at.torch.compose.database.model.InReplyToRelation( + localInReplyToNostrEvent = _root_ide_package_.press.mantra.compose.database.model.intermdiate.LocalInReplyToNostrEvent( + inReplyToRelation = _root_ide_package_.press.mantra.compose.database.model.InReplyToRelation( inReplyToNostrEventId = "nostrEvent", inReplyToRootNostrEventId = "rootId", inReplyToProfilePublicKey = "inReplyToProfileKey", inReplyToRootProfilePublicKey = "rootPubKey", replyingNostrEventId = "hex" ), - nostrEvent = _root_ide_package_.at.torch.compose.database.model.NostrEvent( + nostrEvent = _root_ide_package_.press.mantra.compose.database.model.NostrEvent( id = "hex", content = "Something something something", pubKey = "hexie", @@ -246,7 +246,7 @@ private fun TextNoteFeedItemInReplyToPreview() { sig = "hexsig", tags = emptyArray() ), - profile = _root_ide_package_.at.torch.compose.database.model.Profile( + profile = _root_ide_package_.press.mantra.compose.database.model.Profile( publicKey = "hesd", nostrEventId = "referenced", displayName = "Steve Biko", @@ -264,12 +264,12 @@ private fun TextNoteFeedItemInReplyToPreview() { @Preview @Composable private fun TextNoteFeedItemQuoteNostrEventPreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + _root_ide_package_.press.mantra.compose.ui.theme.TorchTheme { Surface( modifier = Modifier.padding(20.dp) ) { TextNoteFeedItem( - nostrEvent = _root_ide_package_.at.torch.compose.database.model.NostrEvent( + nostrEvent = _root_ide_package_.press.mantra.compose.database.model.NostrEvent( id = "hex", content = "The revolutionary sees his task as liberation not only of the oppressed but also of the oppressor. Happiness can never truly exist in a state of tension.\n" + "Read more at nostr:npub1uh366qnj68a7atvwgwdy4569xd6v5jtferftapqztwjwlzh9553q47pqsx\nnostr:nevent1qqspcusnzxx5u97xht2udvg3yhcq2cvmc0jrxa90lwwdvjplve0atespzpmhxue69uhkummnw3ezuamfdejsyg8h5g639qhuv803hzwexfwhyud6t6suxfu364anddqvrmn9j4cahvxksr8q", @@ -278,14 +278,14 @@ private fun TextNoteFeedItemQuoteNostrEventPreview() { sig = "hexsig", tags = emptyArray() ), - profile = _root_ide_package_.at.torch.compose.database.model.Profile( + profile = _root_ide_package_.press.mantra.compose.database.model.Profile( publicKey = "", nostrEventId = "referenced", displayName = "Frank Talk", nip05 = "frank@talk.at" ), - localQuotedNostrEvent = _root_ide_package_.at.torch.compose.database.model.intermdiate.LocalQuotedNostrEvent( - nostrEvent = _root_ide_package_.at.torch.compose.database.model.NostrEvent( + localQuotedNostrEvent = _root_ide_package_.press.mantra.compose.database.model.intermdiate.LocalQuotedNostrEvent( + nostrEvent = _root_ide_package_.press.mantra.compose.database.model.NostrEvent( id = "1c7213118d4e17c6bad5c6b11125f005619bc3e43374affb9cd6483f665fd5e6", content = "God is not in the habit of coming down from heaven to solve people’s problems on earth.", pubKey = "e5e3ad0272d1fbeead8e439a4ad3453374ca4969c8d2be84025ba4ef8ae5a522", @@ -293,26 +293,26 @@ private fun TextNoteFeedItemQuoteNostrEventPreview() { sig = "hexsig", tags = emptyArray() ), - quotedRelation = _root_ide_package_.at.torch.compose.database.model.QuotedRelation( + quotedRelation = _root_ide_package_.press.mantra.compose.database.model.QuotedRelation( quotingNostrEventId = "e5e3ad0272d1fbeead8e439a4ad3453374ca4969c8d2be84025ba4ef8ae5a520", quotedProfilePublicKey = "e5e3ad0272d1fbeead8e439a4ad3453374ca4969c8d2be84025ba4ef8ae5a522", quotedNostrEventId = "1c7213118d4e17c6bad5c6b11125f005619bc3e43374affb9cd6483f665fd5e6" ), - profile = _root_ide_package_.at.torch.compose.database.model.Profile( + profile = _root_ide_package_.press.mantra.compose.database.model.Profile( publicKey = "e5e3ad0272d1fbeead8e439a4ad3453374ca4969c8d2be84025ba4ef8ae5a522", nostrEventId = "referenced", displayName = "Steve Biko" ), ), - localInReplyToNostrEvent = _root_ide_package_.at.torch.compose.database.model.intermdiate.LocalInReplyToNostrEvent( - inReplyToRelation = _root_ide_package_.at.torch.compose.database.model.InReplyToRelation( + localInReplyToNostrEvent = _root_ide_package_.press.mantra.compose.database.model.intermdiate.LocalInReplyToNostrEvent( + inReplyToRelation = _root_ide_package_.press.mantra.compose.database.model.InReplyToRelation( inReplyToNostrEventId = "nostrEvent", inReplyToRootNostrEventId = "rootId", inReplyToProfilePublicKey = "inReplyToProfileKey", inReplyToRootProfilePublicKey = "rootPubKey", replyingNostrEventId = "hex" ), - nostrEvent = _root_ide_package_.at.torch.compose.database.model.NostrEvent( + nostrEvent = _root_ide_package_.press.mantra.compose.database.model.NostrEvent( id = "hex", content = "Something something something", pubKey = "hexie", @@ -320,7 +320,7 @@ private fun TextNoteFeedItemQuoteNostrEventPreview() { sig = "hexsig", tags = emptyArray() ), - profile = _root_ide_package_.at.torch.compose.database.model.Profile( + profile = _root_ide_package_.press.mantra.compose.database.model.Profile( publicKey = "hesd", nostrEventId = "referenced", displayName = "Steve Biko", @@ -329,12 +329,12 @@ private fun TextNoteFeedItemQuoteNostrEventPreview() { mentionedProfiles = emptyList() ), mentionedProfiles = listOf( - _root_ide_package_.at.torch.compose.database.model.intermdiate.LocalMention( - mention = _root_ide_package_.at.torch.compose.database.model.Mention( + _root_ide_package_.press.mantra.compose.database.model.intermdiate.LocalMention( + mention = _root_ide_package_.press.mantra.compose.database.model.Mention( mentioningNostrEventId = "000067b3f15cac88ba066b28c370083a4fc80dacc054e554ab1dc0def974c89c", mentionedPublicKey = "e5e3ad0272d1fbeead8e439a4ad3453374ca4969c8d2be84025ba4ef8ae5a522" ), - profile = _root_ide_package_.at.torch.compose.database.model.Profile( + profile = _root_ide_package_.press.mantra.compose.database.model.Profile( publicKey = "e5e3ad0272d1fbeead8e439a4ad3453374ca4969c8d2be84025ba4ef8ae5a522", nostrEventId = "referenced", displayName = "Steve Biko", diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/profile/ProfileAvatar.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/profile/ProfileAvatar.kt similarity index 83% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/profile/ProfileAvatar.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/profile/ProfileAvatar.kt index 6922c8cc..c134c913 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/profile/ProfileAvatar.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/profile/ProfileAvatar.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets.profile +package press.mantra.compose.ui.composable.widgets.profile import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size @@ -25,7 +25,7 @@ import coil3.compose.AsyncImage fun ProfileAvatar( size: Dp = 55.dp, shape: Shape = CircleShape, - profile: at.torch.compose.database.model.Profile + profile: press.mantra.compose.database.model.Profile ) { ProfileAvatar( size = size, @@ -40,7 +40,7 @@ fun ProfileAvatar( size: Dp = 55.dp, shape: Shape = CircleShape, publicKey: String, - profile: at.torch.compose.database.model.Profile? + profile: press.mantra.compose.database.model.Profile? ) { val modifier = Modifier.size(size).clip(shape = shape) @@ -58,18 +58,18 @@ fun ProfileAvatar( } else { // Load image... val placeHolderGraphic = - _root_ide_package_.at.torch.compose.ui.composable.widgets.coil.forwardingPainter( + _root_ide_package_.press.mantra.compose.ui.composable.widgets.coil.forwardingPainter( painter = rememberVectorPainter(Icons.Default.Face5), colorFilter = ColorFilter.tint(tintColor) ) val fallbackGraphic = - _root_ide_package_.at.torch.compose.ui.composable.widgets.coil.forwardingPainter( + _root_ide_package_.press.mantra.compose.ui.composable.widgets.coil.forwardingPainter( painter = rememberVectorPainter(Icons.Default.Face5), colorFilter = ColorFilter.tint(tintColor) ) val errorGraphic = - _root_ide_package_.at.torch.compose.ui.composable.widgets.coil.forwardingPainter( + _root_ide_package_.press.mantra.compose.ui.composable.widgets.coil.forwardingPainter( painter = rememberVectorPainter(Icons.Default.FaceRetouchingOff), colorFilter = ColorFilter.tint(tintColor) ) @@ -91,13 +91,13 @@ fun ProfileAvatar( @Preview @Composable fun ProfileAvatarPreview() { - _root_ide_package_.at.torch.compose.ui.theme.TorchTheme { + _root_ide_package_.press.mantra.compose.ui.theme.TorchTheme { Surface( modifier = Modifier.padding(20.dp) ) { ProfileAvatar( publicKey = "hwgwefwase", - profile = _root_ide_package_.at.torch.compose.database.model.Profile( + profile = _root_ide_package_.press.mantra.compose.database.model.Profile( publicKey = "", nostrEventId = "referenced", displayName = "Frank Talk", diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/profile/ProfileColor.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/profile/ProfileColor.kt similarity index 76% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/profile/ProfileColor.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/profile/ProfileColor.kt index a3cdd08a..1ad917b9 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/profile/ProfileColor.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/profile/ProfileColor.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.composable.widgets.profile +package press.mantra.compose.ui.composable.widgets.profile import androidx.compose.ui.graphics.Color import com.vitorpamplona.quartz.nip01Core.core.HexKey @@ -15,7 +15,7 @@ object ProfileColor { ) } - fun fromProfile(profile: at.torch.compose.database.model.Profile): Color { + fun fromProfile(profile: press.mantra.compose.database.model.Profile): Color { return fromPublicKey( profile.publicKey ) diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/wallet/WalletAvatar.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/wallet/WalletAvatar.kt similarity index 97% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/wallet/WalletAvatar.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/wallet/WalletAvatar.kt index c06e3fb0..3c90dcbb 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/wallet/WalletAvatar.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/wallet/WalletAvatar.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package at.torch.compose.ui.composable.widgets.wallet +package press.mantra.compose.ui.composable.widgets.wallet import androidx.compose.foundation.background import androidx.compose.foundation.border @@ -45,7 +45,7 @@ import androidx.compose.ui.unit.TextUnit import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.machankura.compose.ui.composable.widgets.buttons.Clickable -import at.torch.compose.ui.composable.widgets.dialogs.ModalBottomSheet +import press.mantra.compose.ui.composable.widgets.dialogs.ModalBottomSheet object WalletAvatars { val list = listOf( diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/wallet/WalletsSelector.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/wallet/WalletsSelector.kt similarity index 97% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/wallet/WalletsSelector.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/wallet/WalletsSelector.kt index 5d2d0f96..95f87519 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/composable/widgets/wallet/WalletsSelector.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/composable/widgets/wallet/WalletsSelector.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package at.torch.compose.ui.composable.widgets.wallet +package press.mantra.compose.ui.composable.widgets.wallet import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -116,7 +116,7 @@ private fun AvailableWalletView( ) { var showWalletEditDialog by remember { mutableStateOf(false) } if (showWalletEditDialog) { - _root_ide_package_.at.torch.compose.ui.composable.widgets.LoadingDataIndicator( + _root_ide_package_.press.mantra.compose.ui.composable.widgets.LoadingDataIndicator( text = "Edit function coming soon" ) // EditWalletDialog( diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/theme/Color.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/theme/Color.kt similarity index 99% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/theme/Color.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/theme/Color.kt index dd3074d1..809f631c 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/theme/Color.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/theme/Color.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.theme +package press.mantra.compose.ui.theme import androidx.compose.ui.graphics.Color diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/theme/Theme.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/theme/Theme.kt similarity index 99% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/theme/Theme.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/theme/Theme.kt index 72e5a196..804c46b0 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/theme/Theme.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/theme/Theme.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.theme +package press.mantra.compose.ui.theme import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.material3.ColorScheme diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/theme/Type.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/theme/Type.kt similarity index 100% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/theme/Type.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/theme/Type.kt diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/ActiveProfileViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/ActiveProfileViewModel.kt similarity index 69% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/ActiveProfileViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/ActiveProfileViewModel.kt index a18a2363..8a4d46a3 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/ActiveProfileViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/ActiveProfileViewModel.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -18,14 +18,14 @@ import kotlinx.coroutines.launch class ActiveProfileViewModel( val activeUserPublicKey: HexKey, val nostrEventId: HexKey, - initialActiveProfileUIState: at.torch.compose.ui.view.state.ActiveProfileUIState, - val nostrRepository: at.torch.compose.repository.NostrRepository + initialActiveProfileUIState: press.mantra.compose.ui.view.state.ActiveProfileUIState, + val nostrRepository: press.mantra.compose.repository.NostrRepository ): ViewModel() { - var activeProfileUIState: at.torch.compose.ui.view.state.ActiveProfileUIState by mutableStateOf(initialActiveProfileUIState) + var activeProfileUIState: press.mantra.compose.ui.view.state.ActiveProfileUIState by mutableStateOf(initialActiveProfileUIState) private set fun retryLoad() { - activeProfileUIState = at.torch.compose.ui.view.state.ActiveProfileUIState.Loading + activeProfileUIState = press.mantra.compose.ui.view.state.ActiveProfileUIState.Loading loadNostrFeed() } @@ -37,11 +37,11 @@ class ActiveProfileViewModel( nostrEventId ).firstOrNull().let { localNostrEvent -> activeProfileUIState = if (localNostrEvent != null && localNostrEvent.nostrEvent.kind == MetadataEvent.KIND) { - at.torch.compose.ui.view.state.ActiveProfileUIState.Loaded( + press.mantra.compose.ui.view.state.ActiveProfileUIState.Loaded( localNostrEvent = localNostrEvent ) } else { - at.torch.compose.ui.view.state.ActiveProfileUIState.Error + press.mantra.compose.ui.view.state.ActiveProfileUIState.Error } } } @@ -53,8 +53,8 @@ class ActiveProfileViewModel( fun factory( nostrEventId: HexKey, activeUserPublicKey: HexKey, - initialActiveProfileUIState: at.torch.compose.ui.view.state.ActiveProfileUIState = at.torch.compose.ui.view.state.ActiveProfileUIState.Loading, - nostrRepository: at.torch.compose.repository.NostrRepository, + initialActiveProfileUIState: press.mantra.compose.ui.view.state.ActiveProfileUIState = press.mantra.compose.ui.view.state.ActiveProfileUIState.Loading, + nostrRepository: press.mantra.compose.repository.NostrRepository, ): ViewModelProvider.Factory = viewModelFactory { initializer { ActiveProfileViewModel( diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/AddMemberToChatRoomConfirmationViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/AddMemberToChatRoomConfirmationViewModel.kt similarity index 91% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/AddMemberToChatRoomConfirmationViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/AddMemberToChatRoomConfirmationViewModel.kt index e0bf19fe..6109e499 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/AddMemberToChatRoomConfirmationViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/AddMemberToChatRoomConfirmationViewModel.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model import androidx.compose.runtime.MutableState import androidx.compose.runtime.getValue @@ -9,16 +9,15 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewmodel.initializer import androidx.lifecycle.viewmodel.viewModelFactory -import at.torch.compose.database.model.MarmotKeyPackage -import at.torch.compose.database.model.intermdiate.LocalChatRoom -import at.torch.compose.repository.ChatRepository -import at.torch.compose.repository.NostrRepository -import at.torch.compose.ui.view.state.AddMemberToChatRoomConfirmationUIState +import press.mantra.compose.database.model.MarmotKeyPackage +import press.mantra.compose.database.model.intermdiate.LocalChatRoom +import press.mantra.compose.repository.ChatRepository +import press.mantra.compose.repository.NostrRepository +import press.mantra.compose.ui.view.state.AddMemberToChatRoomConfirmationUIState import co.touchlab.kermit.Logger import com.vitorpamplona.quartz.nip01Core.core.HexKey import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.IO -import kotlinx.coroutines.flow.firstOrNull import kotlinx.coroutines.launch class AddMemberToChatRoomConfirmationViewModel( diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/ChatMessageListViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/ChatMessageListViewModel.kt similarity index 97% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/ChatMessageListViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/ChatMessageListViewModel.kt index 61354cf1..42c256de 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/ChatMessageListViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/ChatMessageListViewModel.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.BoxWithConstraints @@ -42,15 +42,15 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewmodel.initializer import androidx.lifecycle.viewmodel.viewModelFactory -import at.torch.compose.database.model.NegentropySynchronizeRequest -import at.torch.compose.database.model.intermdiate.LocalChatRoom -import at.torch.compose.database.model.types.SynchronizationFilter -import at.torch.compose.extensions.toFormattedTimeAndDateString -import at.torch.compose.nostr.Relays -import at.torch.compose.repository.ChatRepository -import at.torch.compose.repository.NostrRepository -import at.torch.compose.ui.composable.widgets.profile.ProfileColor -import at.torch.compose.ui.view.state.ChatMessageListUIState +import press.mantra.compose.database.model.NegentropySynchronizeRequest +import press.mantra.compose.database.model.intermdiate.LocalChatRoom +import press.mantra.compose.database.model.types.SynchronizationFilter +import press.mantra.compose.extensions.toFormattedTimeAndDateString +import press.mantra.compose.nostr.Relays +import press.mantra.compose.repository.ChatRepository +import press.mantra.compose.repository.NostrRepository +import press.mantra.compose.ui.composable.widgets.profile.ProfileColor +import press.mantra.compose.ui.view.state.ChatMessageListUIState import co.touchlab.kermit.Logger import com.vitorpamplona.quartz.marmot.mip03GroupMessages.GroupEvent import com.vitorpamplona.quartz.nip17Dm.settings.ChatMessageRelayListEvent diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/ChatRoomCreationViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/ChatRoomCreationViewModel.kt similarity index 90% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/ChatRoomCreationViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/ChatRoomCreationViewModel.kt index e4156d61..8f9a5157 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/ChatRoomCreationViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/ChatRoomCreationViewModel.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model import androidx.compose.runtime.MutableState import androidx.compose.runtime.mutableStateOf @@ -7,14 +7,14 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewmodel.initializer import androidx.lifecycle.viewmodel.viewModelFactory -import at.torch.compose.extensions.toHex -import at.torch.compose.nostr.Relays -import at.torch.compose.repository.ChatRepository -import at.torch.compose.repository.NostrRepository -import at.torch.compose.ui.composable.navigation.routes.ChatRoomMessagingRoute -import at.torch.compose.ui.composable.navigation.routes.ImplementationPendingRoute -import at.torch.compose.ui.composable.navigation.routes.Route -import at.torch.compose.ui.view.state.form.ChatRoomCreationFormState +import press.mantra.compose.extensions.toHex +import press.mantra.compose.nostr.Relays +import press.mantra.compose.repository.ChatRepository +import press.mantra.compose.repository.NostrRepository +import press.mantra.compose.ui.composable.navigation.routes.ChatRoomMessagingRoute +import press.mantra.compose.ui.composable.navigation.routes.ImplementationPendingRoute +import press.mantra.compose.ui.composable.navigation.routes.Route +import press.mantra.compose.ui.view.state.form.ChatRoomCreationFormState import co.touchlab.kermit.Logger import com.vitorpamplona.quartz.marmot.mip01Groups.MarmotGroupData import com.vitorpamplona.quartz.marmot.mls.crypto.Ed25519 diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/ChatRoomDetailViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/ChatRoomDetailViewModel.kt similarity index 90% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/ChatRoomDetailViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/ChatRoomDetailViewModel.kt index 4060309a..4c0c8416 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/ChatRoomDetailViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/ChatRoomDetailViewModel.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model import androidx.compose.runtime.MutableState import androidx.compose.runtime.getValue @@ -9,12 +9,12 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewmodel.initializer import androidx.lifecycle.viewmodel.viewModelFactory -import at.torch.compose.database.model.intermdiate.LocalChatRoom -import at.torch.compose.repository.ChatRepository -import at.torch.compose.repository.NostrRepository -import at.torch.compose.ui.composable.navigation.routes.HomeRoute -import at.torch.compose.ui.composable.navigation.routes.Route -import at.torch.compose.ui.view.state.ChatRoomDetailUIState +import press.mantra.compose.database.model.intermdiate.LocalChatRoom +import press.mantra.compose.repository.ChatRepository +import press.mantra.compose.repository.NostrRepository +import press.mantra.compose.ui.composable.navigation.routes.HomeRoute +import press.mantra.compose.ui.composable.navigation.routes.Route +import press.mantra.compose.ui.view.state.ChatRoomDetailUIState import co.touchlab.kermit.Logger import com.vitorpamplona.quartz.nip01Core.core.HexKey import kotlinx.coroutines.Dispatchers diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/ChatRoomListViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/ChatRoomListViewModel.kt similarity index 94% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/ChatRoomListViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/ChatRoomListViewModel.kt index a9fd6a53..15b192a0 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/ChatRoomListViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/ChatRoomListViewModel.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -25,12 +25,12 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewmodel.initializer import androidx.lifecycle.viewmodel.viewModelFactory -import at.torch.compose.database.model.NegentropySynchronizeRequest -import at.torch.compose.database.model.types.SynchronizationFilter -import at.torch.compose.nostr.Relays -import at.torch.compose.repository.ChatRepository -import at.torch.compose.repository.NostrRepository -import at.torch.compose.ui.view.state.ChatRoomListUIState +import press.mantra.compose.database.model.NegentropySynchronizeRequest +import press.mantra.compose.database.model.types.SynchronizationFilter +import press.mantra.compose.nostr.Relays +import press.mantra.compose.repository.ChatRepository +import press.mantra.compose.repository.NostrRepository +import press.mantra.compose.ui.view.state.ChatRoomListUIState import co.touchlab.kermit.Logger import com.vitorpamplona.quartz.marmot.mip03GroupMessages.GroupEvent import com.vitorpamplona.quartz.nip59Giftwrap.wraps.GiftWrapEvent @@ -133,7 +133,7 @@ class ChatRoomListViewModel( @OptIn(ExperimentalMaterial3ExpressiveApi::class) @Composable fun RenderFeed( - onNavigateToDirectMessageDetail: (at.torch.compose.ui.composable.navigation.routes.Route) -> Unit + onNavigateToDirectMessageDetail: (press.mantra.compose.ui.composable.navigation.routes.Route) -> Unit ) { Column( modifier = Modifier.fillMaxWidth(), @@ -177,7 +177,7 @@ class ChatRoomListViewModel( modifier = Modifier.fillMaxWidth(), onClick = { onNavigateToDirectMessageDetail.invoke( - _root_ide_package_.at.torch.compose.ui.composable.navigation.routes.ChatRoomMessagingRoute( + _root_ide_package_.press.mantra.compose.ui.composable.navigation.routes.ChatRoomMessagingRoute( activeUserPublicKey = publicKey, chatRoomId = localChatRoom.chatRoom.id, relayHint = localChatRoom.localParticipants.firstOrNull { it.participant.participantPublicKey != localChatRoom.chatRoom.userPublicKey }?.participant?.relayHint diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/ChatRoomMessagingViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/ChatRoomMessagingViewModel.kt similarity index 93% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/ChatRoomMessagingViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/ChatRoomMessagingViewModel.kt index fc0f036b..f865b6c0 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/ChatRoomMessagingViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/ChatRoomMessagingViewModel.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model import androidx.compose.runtime.MutableState import androidx.compose.runtime.getValue @@ -9,16 +9,15 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewmodel.initializer import androidx.lifecycle.viewmodel.viewModelFactory -import at.torch.compose.database.GENESIS_AT -import at.torch.compose.database.builder.getRoomDatabase -import at.torch.compose.database.model.NegentropySynchronizeRequest -import at.torch.compose.database.model.types.SynchronizationFilter -import at.torch.compose.nostr.Relays -import at.torch.compose.repository.ChatRepository -import at.torch.compose.repository.NostrRepository -import at.torch.compose.ui.composable.navigation.routes.ChatRoomMessagingRoute -import at.torch.compose.ui.composable.navigation.routes.Route -import at.torch.compose.ui.view.state.ChatRoomMessagingUIState +import press.mantra.compose.database.GENESIS_AT +import press.mantra.compose.database.model.NegentropySynchronizeRequest +import press.mantra.compose.database.model.types.SynchronizationFilter +import press.mantra.compose.nostr.Relays +import press.mantra.compose.repository.ChatRepository +import press.mantra.compose.repository.NostrRepository +import press.mantra.compose.ui.composable.navigation.routes.ChatRoomMessagingRoute +import press.mantra.compose.ui.composable.navigation.routes.Route +import press.mantra.compose.ui.view.state.ChatRoomMessagingUIState import co.touchlab.kermit.Logger import com.vitorpamplona.quartz.marmot.mip00KeyPackages.KeyPackageEvent import com.vitorpamplona.quartz.nip01Core.core.HexKey diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/CreateProfileViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/CreateProfileViewModel.kt similarity index 93% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/CreateProfileViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/CreateProfileViewModel.kt index 74130058..fd076cc8 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/CreateProfileViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/CreateProfileViewModel.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model import androidx.compose.runtime.MutableState import androidx.compose.runtime.mutableStateOf @@ -7,10 +7,10 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewmodel.initializer import androidx.lifecycle.viewmodel.viewModelFactory -import at.torch.compose.repository.MarmotRepository -import at.torch.compose.repository.NostrRepository -import at.torch.compose.ui.view.state.CreateProfileUIState -import at.torch.compose.ui.view.state.form.CreateProfileFormState +import press.mantra.compose.repository.MarmotRepository +import press.mantra.compose.repository.NostrRepository +import press.mantra.compose.ui.view.state.CreateProfileUIState +import press.mantra.compose.ui.view.state.form.CreateProfileFormState import co.touchlab.kermit.Logger import fr.acinq.bitcoin.Chain import fr.acinq.bitcoin.MnemonicCode diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/FeedListViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/FeedListViewModel.kt similarity index 89% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/FeedListViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/FeedListViewModel.kt index e1000fe6..12c1772c 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/FeedListViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/FeedListViewModel.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -24,9 +24,9 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewmodel.initializer import androidx.lifecycle.viewmodel.viewModelFactory -import at.torch.compose.database.model.NegentropySynchronizeRequest -import at.torch.compose.ui.composable.widgets.feed.ListView -import at.torch.compose.ui.view.state.FeedListUIState +import press.mantra.compose.database.model.NegentropySynchronizeRequest +import press.mantra.compose.ui.composable.widgets.feed.ListView +import press.mantra.compose.ui.view.state.FeedListUIState import co.touchlab.kermit.Logger import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.IO @@ -36,8 +36,8 @@ import kotlinx.coroutines.launch class FeedListViewModel( initialFeedListUIState: FeedListUIState, - val synchronizationFilter: at.torch.compose.database.model.types.SynchronizationFilter, - val nostrRepository: at.torch.compose.repository.NostrRepository + val synchronizationFilter: press.mantra.compose.database.model.types.SynchronizationFilter, + val nostrRepository: press.mantra.compose.repository.NostrRepository ): ViewModel() { val logger = Logger.withTag(TAG) var feedListUIState: FeedListUIState by mutableStateOf(initialFeedListUIState) @@ -45,7 +45,7 @@ class FeedListViewModel( val isSynchronizationPending: MutableState = mutableStateOf(false) - val negentropySynchronizeRequests = at.torch.compose.nostr.Relays.DefaultDMRelayList.shuffled().map { normalizedRelayUrl -> + val negentropySynchronizeRequests = press.mantra.compose.nostr.Relays.DefaultDMRelayList.shuffled().map { normalizedRelayUrl -> NegentropySynchronizeRequest( id = NegentropySynchronizeRequest.computeId( normalizedRelayUrl.url, @@ -103,7 +103,7 @@ class FeedListViewModel( @Composable fun RenderFeed( activeUserPublicKey: String, - onNavigateToEvent: (at.torch.compose.ui.composable.navigation.routes.Route) -> Unit + onNavigateToEvent: (press.mantra.compose.ui.composable.navigation.routes.Route) -> Unit ) { Column( modifier = Modifier.fillMaxWidth(), @@ -149,7 +149,7 @@ class FeedListViewModel( localNostrEvent.ListView( onNavigateToEvent = { nostrEventId -> onNavigateToEvent.invoke( - _root_ide_package_.at.torch.compose.ui.composable.navigation.routes.NostrEventDetailRoute( + _root_ide_package_.press.mantra.compose.ui.composable.navigation.routes.NostrEventDetailRoute( activeUserPublicKey = activeUserPublicKey, nostrEventId = nostrEventId ) @@ -189,8 +189,8 @@ class FeedListViewModel( fun factory( initialFeedListUIState: FeedListUIState = FeedListUIState.Loading, - synchronizationFilter: at.torch.compose.database.model.types.SynchronizationFilter, - nostrRepository: at.torch.compose.repository.NostrRepository, + synchronizationFilter: press.mantra.compose.database.model.types.SynchronizationFilter, + nostrRepository: press.mantra.compose.repository.NostrRepository, ): ViewModelProvider.Factory = viewModelFactory { initializer { FeedListViewModel( diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/FollowersListViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/FollowersListViewModel.kt similarity index 81% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/FollowersListViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/FollowersListViewModel.kt index 6eac98aa..f9084455 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/FollowersListViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/FollowersListViewModel.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -31,13 +31,13 @@ import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.launch class FollowersListViewModel( - initialFollowingListUIState: at.torch.compose.ui.view.state.FollowersListUIState, + initialFollowingListUIState: press.mantra.compose.ui.view.state.FollowersListUIState, val publicKey: String, - val synchronizationFilter: at.torch.compose.database.model.types.SynchronizationFilter, - val nostrRepository: at.torch.compose.repository.NostrRepository + val synchronizationFilter: press.mantra.compose.database.model.types.SynchronizationFilter, + val nostrRepository: press.mantra.compose.repository.NostrRepository ): ViewModel() { val logger = Logger.withTag(TAG) - var followersListUIState: at.torch.compose.ui.view.state.FollowersListUIState by mutableStateOf(initialFollowingListUIState) + var followersListUIState: press.mantra.compose.ui.view.state.FollowersListUIState by mutableStateOf(initialFollowingListUIState) private set val isSynchronizationPending: MutableState = mutableStateOf(false) @@ -55,7 +55,7 @@ class FollowersListViewModel( nostrRepository.observeProfileWithFollowers( publicKey ).collect { localFollowers -> - followersListUIState = at.torch.compose.ui.view.state.FollowersListUIState.Loaded( + followersListUIState = press.mantra.compose.ui.view.state.FollowersListUIState.Loaded( followers = localFollowers?.followers ?: emptyList() ) } @@ -67,9 +67,9 @@ class FollowersListViewModel( viewModelScope.launch(Dispatchers.IO) { // Sync Notifications... might want to also run this in the background nostrRepository.queueNegentropySynchronizeRequest( - at.torch.compose.nostr.Relays.DefaultDMRelayList.shuffled().map { normalizedRelayUrl -> - _root_ide_package_.at.torch.compose.database.model.NegentropySynchronizeRequest( - id = at.torch.compose.database.model.NegentropySynchronizeRequest.computeId( + press.mantra.compose.nostr.Relays.DefaultDMRelayList.shuffled().map { normalizedRelayUrl -> + _root_ide_package_.press.mantra.compose.database.model.NegentropySynchronizeRequest( + id = press.mantra.compose.database.model.NegentropySynchronizeRequest.computeId( relayURL = normalizedRelayUrl.url, synchronizationFilter = synchronizationFilter ), @@ -97,14 +97,14 @@ class FollowersListViewModel( @Composable fun RenderFeed( activeUserPublicKey: String, - onNavigateToEvent: (at.torch.compose.ui.composable.navigation.routes.Route) -> Unit + onNavigateToEvent: (press.mantra.compose.ui.composable.navigation.routes.Route) -> Unit ) { Column( modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally ) { when (val followersListUIState = followersListUIState) { - at.torch.compose.ui.view.state.FollowersListUIState.Error -> { + press.mantra.compose.ui.view.state.FollowersListUIState.Error -> { Column( modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally @@ -117,7 +117,7 @@ class FollowersListViewModel( ) } } - is at.torch.compose.ui.view.state.FollowersListUIState.Loaded -> { + is press.mantra.compose.ui.view.state.FollowersListUIState.Loaded -> { if (followersListUIState.followers.isEmpty()) { Column( modifier = Modifier.fillMaxWidth(), @@ -149,7 +149,7 @@ class FollowersListViewModel( } } - at.torch.compose.ui.view.state.FollowersListUIState.Loading -> { + press.mantra.compose.ui.view.state.FollowersListUIState.Loading -> { Column( modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally @@ -176,10 +176,10 @@ class FollowersListViewModel( const val TAG = "FollowersListViewModel" fun factory( - initialFeedListUIState: at.torch.compose.ui.view.state.FollowersListUIState = at.torch.compose.ui.view.state.FollowersListUIState.Loading, + initialFeedListUIState: press.mantra.compose.ui.view.state.FollowersListUIState = press.mantra.compose.ui.view.state.FollowersListUIState.Loading, publicKey: String, - synchronizationFilter: at.torch.compose.database.model.types.SynchronizationFilter, - nostrRepository: at.torch.compose.repository.NostrRepository, + synchronizationFilter: press.mantra.compose.database.model.types.SynchronizationFilter, + nostrRepository: press.mantra.compose.repository.NostrRepository, ): ViewModelProvider.Factory = viewModelFactory { initializer { FollowersListViewModel( diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/FollowingListViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/FollowingListViewModel.kt similarity index 81% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/FollowingListViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/FollowingListViewModel.kt index 205f6cda..08be0a15 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/FollowingListViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/FollowingListViewModel.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -31,13 +31,13 @@ import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.launch class FollowingListViewModel( - initialFollowingListUIState: at.torch.compose.ui.view.state.FollowingListUIState, + initialFollowingListUIState: press.mantra.compose.ui.view.state.FollowingListUIState, val publicKey: String, - val synchronizationFilter: at.torch.compose.database.model.types.SynchronizationFilter, - val nostrRepository: at.torch.compose.repository.NostrRepository + val synchronizationFilter: press.mantra.compose.database.model.types.SynchronizationFilter, + val nostrRepository: press.mantra.compose.repository.NostrRepository ): ViewModel() { val logger = Logger.withTag(TAG) - var followingListUIState: at.torch.compose.ui.view.state.FollowingListUIState by mutableStateOf(initialFollowingListUIState) + var followingListUIState: press.mantra.compose.ui.view.state.FollowingListUIState by mutableStateOf(initialFollowingListUIState) private set val isSynchronizationPending: MutableState = mutableStateOf(false) @@ -54,7 +54,7 @@ class FollowingListViewModel( nostrRepository.observeProfileWithFollowing( publicKey ).collect { localFollowing -> - followingListUIState = at.torch.compose.ui.view.state.FollowingListUIState.Loaded( + followingListUIState = press.mantra.compose.ui.view.state.FollowingListUIState.Loaded( following = localFollowing?.following ?: emptyList() ) } @@ -66,9 +66,9 @@ class FollowingListViewModel( viewModelScope.launch(Dispatchers.IO) { // Sync Notifications... might want to also run this in the background nostrRepository.queueNegentropySynchronizeRequest( - at.torch.compose.nostr.Relays.DefaultDMRelayList.shuffled().map { normalizedRelayUrl -> - _root_ide_package_.at.torch.compose.database.model.NegentropySynchronizeRequest( - id = at.torch.compose.database.model.NegentropySynchronizeRequest.computeId( + press.mantra.compose.nostr.Relays.DefaultDMRelayList.shuffled().map { normalizedRelayUrl -> + _root_ide_package_.press.mantra.compose.database.model.NegentropySynchronizeRequest( + id = press.mantra.compose.database.model.NegentropySynchronizeRequest.computeId( relayURL = normalizedRelayUrl.url, synchronizationFilter = synchronizationFilter ), @@ -96,14 +96,14 @@ class FollowingListViewModel( @Composable fun RenderFeed( activeUserPublicKey: String, - onNavigateToEvent: (at.torch.compose.ui.composable.navigation.routes.Route) -> Unit + onNavigateToEvent: (press.mantra.compose.ui.composable.navigation.routes.Route) -> Unit ) { Column( modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally ) { when (val feedListUIState = followingListUIState) { - at.torch.compose.ui.view.state.FollowingListUIState.Error -> { + press.mantra.compose.ui.view.state.FollowingListUIState.Error -> { Column( modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally @@ -116,7 +116,7 @@ class FollowingListViewModel( ) } } - is at.torch.compose.ui.view.state.FollowingListUIState.Loaded -> { + is press.mantra.compose.ui.view.state.FollowingListUIState.Loaded -> { if (feedListUIState.following.isEmpty()) { Column( modifier = Modifier.fillMaxWidth(), @@ -148,7 +148,7 @@ class FollowingListViewModel( } } - at.torch.compose.ui.view.state.FollowingListUIState.Loading -> { + press.mantra.compose.ui.view.state.FollowingListUIState.Loading -> { Column( modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally @@ -175,10 +175,10 @@ class FollowingListViewModel( const val TAG = "FollowingListViewModel" fun factory( - initialFeedListUIState: at.torch.compose.ui.view.state.FollowingListUIState = at.torch.compose.ui.view.state.FollowingListUIState.Loading, + initialFeedListUIState: press.mantra.compose.ui.view.state.FollowingListUIState = press.mantra.compose.ui.view.state.FollowingListUIState.Loading, publicKey: String, - synchronizationFilter: at.torch.compose.database.model.types.SynchronizationFilter, - nostrRepository: at.torch.compose.repository.NostrRepository, + synchronizationFilter: press.mantra.compose.database.model.types.SynchronizationFilter, + nostrRepository: press.mantra.compose.repository.NostrRepository, ): ViewModelProvider.Factory = viewModelFactory { initializer { FollowingListViewModel( diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/HomeViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/HomeViewModel.kt similarity index 81% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/HomeViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/HomeViewModel.kt index 3e465cb2..109bbcaf 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/HomeViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/HomeViewModel.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model import androidx.compose.foundation.pager.PagerState import androidx.compose.runtime.getValue @@ -9,17 +9,12 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewmodel.initializer import androidx.lifecycle.viewmodel.viewModelFactory -import at.torch.compose.database.model.types.SynchronizationFilter -import at.torch.compose.ui.view.state.HomeScreenUIState +import press.mantra.compose.ui.view.state.HomeScreenUIState import co.touchlab.kermit.Logger -import com.vitorpamplona.quartz.marmot.mip03GroupMessages.GroupEvent import com.vitorpamplona.quartz.nip01Core.core.HexKey -import com.vitorpamplona.quartz.nip59Giftwrap.wraps.GiftWrapEvent import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.IO import kotlinx.coroutines.launch -import kotlin.time.Clock -import kotlin.time.Duration.Companion.hours enum class HomeScreenType { Messages @@ -28,7 +23,7 @@ enum class HomeScreenType { class HomeViewModel( val activeUserPublicKey: HexKey, val initialHomeScreenUIState: HomeScreenUIState, - val nostrRepository: at.torch.compose.repository.NostrRepository, + val nostrRepository: press.mantra.compose.repository.NostrRepository, val pagerState: PagerState ): ViewModel() { @@ -65,7 +60,7 @@ class HomeViewModel( fun factory( activeUserPublicKey: HexKey, initialHomeScreenUIState: HomeScreenUIState, - nostrRepository: at.torch.compose.repository.NostrRepository, + nostrRepository: press.mantra.compose.repository.NostrRepository, pagerState: PagerState ): ViewModelProvider.Factory = viewModelFactory { initializer { diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/InReplyToViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/InReplyToViewModel.kt similarity index 79% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/InReplyToViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/InReplyToViewModel.kt index 2e56021d..692f350f 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/InReplyToViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/InReplyToViewModel.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -24,7 +24,7 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewmodel.initializer import androidx.lifecycle.viewmodel.viewModelFactory -import at.torch.compose.ui.composable.widgets.feed.ListView +import press.mantra.compose.ui.composable.widgets.feed.ListView import co.touchlab.kermit.Logger import com.vitorpamplona.quartz.nip10Notes.TextNoteEvent import com.vitorpamplona.quartz.nip18Reposts.RepostEvent @@ -36,14 +36,14 @@ import kotlinx.coroutines.launch import kotlin.time.Instant class InReplyToViewModel( - val nostrEvent: at.torch.compose.database.model.NostrEvent, - val profile: at.torch.compose.database.model.Profile?, - initialFeedListUIState: at.torch.compose.ui.view.state.FeedListUIState, - val synchronizationFilter: at.torch.compose.database.model.types.SynchronizationFilter, - val nostrRepository: at.torch.compose.repository.NostrRepository + val nostrEvent: press.mantra.compose.database.model.NostrEvent, + val profile: press.mantra.compose.database.model.Profile?, + initialFeedListUIState: press.mantra.compose.ui.view.state.FeedListUIState, + val synchronizationFilter: press.mantra.compose.database.model.types.SynchronizationFilter, + val nostrRepository: press.mantra.compose.repository.NostrRepository ): ViewModel() { val logger = Logger.withTag(TAG) - var inReplyToFeedListUIState: at.torch.compose.ui.view.state.FeedListUIState by mutableStateOf(initialFeedListUIState) + var inReplyToFeedListUIState: press.mantra.compose.ui.view.state.FeedListUIState by mutableStateOf(initialFeedListUIState) private set val isSynchronizationPending: MutableState = mutableStateOf(false) @@ -61,7 +61,7 @@ class InReplyToViewModel( nostrRepository.observeNostrFeed( synchronizationFilter ).distinctUntilChanged().collect { localNostrEvents -> - inReplyToFeedListUIState = at.torch.compose.ui.view.state.FeedListUIState.Loaded( + inReplyToFeedListUIState = press.mantra.compose.ui.view.state.FeedListUIState.Loaded( localNostrEvents = localNostrEvents ) } @@ -74,12 +74,12 @@ class InReplyToViewModel( // Sync Notifications... might want to also run this in the background val publicRelays = profile?.profilePublicRelays( nostrRepository - ) ?: at.torch.compose.nostr.Relays.DefaultDMRelayList + ) ?: press.mantra.compose.nostr.Relays.DefaultDMRelayList nostrRepository.queueNegentropySynchronizeRequest( publicRelays.take(3).map { normalizedRelayUrl -> - _root_ide_package_.at.torch.compose.database.model.NegentropySynchronizeRequest( - id = at.torch.compose.database.model.NegentropySynchronizeRequest.computeId( + _root_ide_package_.press.mantra.compose.database.model.NegentropySynchronizeRequest( + id = press.mantra.compose.database.model.NegentropySynchronizeRequest.computeId( relayURL = normalizedRelayUrl.url, synchronizationFilter = synchronizationFilter ), @@ -107,14 +107,14 @@ class InReplyToViewModel( @Composable fun RenderFeed( activeUserPublicKey: String, - onNavigateToEvent: (at.torch.compose.ui.composable.navigation.routes.Route) -> Unit + onNavigateToEvent: (press.mantra.compose.ui.composable.navigation.routes.Route) -> Unit ) { Column( modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally ) { when (val feedListUIState = inReplyToFeedListUIState) { - at.torch.compose.ui.view.state.FeedListUIState.Error -> { + press.mantra.compose.ui.view.state.FeedListUIState.Error -> { Column( modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally @@ -127,7 +127,7 @@ class InReplyToViewModel( ) } } - is at.torch.compose.ui.view.state.FeedListUIState.Loaded -> { + is press.mantra.compose.ui.view.state.FeedListUIState.Loaded -> { if (feedListUIState.localNostrEvents.isEmpty()) { Column( modifier = Modifier.fillMaxWidth(), @@ -153,7 +153,7 @@ class InReplyToViewModel( localNostrEvent.ListView( onNavigateToEvent = { nostrEventId -> onNavigateToEvent.invoke( - _root_ide_package_.at.torch.compose.ui.composable.navigation.routes.NostrEventDetailRoute( + _root_ide_package_.press.mantra.compose.ui.composable.navigation.routes.NostrEventDetailRoute( activeUserPublicKey = activeUserPublicKey, nostrEventId = nostrEventId ) @@ -165,7 +165,7 @@ class InReplyToViewModel( } } - at.torch.compose.ui.view.state.FeedListUIState.Loading -> { + press.mantra.compose.ui.view.state.FeedListUIState.Loading -> { Column( modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally @@ -192,11 +192,11 @@ class InReplyToViewModel( const val TAG = "InReplyToViewModel" fun factory( - nostrEvent: at.torch.compose.database.model.NostrEvent, - profile: at.torch.compose.database.model.Profile?, + nostrEvent: press.mantra.compose.database.model.NostrEvent, + profile: press.mantra.compose.database.model.Profile?, createdAt: Instant, - initialFeedListUIState: at.torch.compose.ui.view.state.FeedListUIState = at.torch.compose.ui.view.state.FeedListUIState.Loading, - synchronizationFilter: at.torch.compose.database.model.types.SynchronizationFilter = _root_ide_package_.at.torch.compose.database.model.types.SynchronizationFilter( + initialFeedListUIState: press.mantra.compose.ui.view.state.FeedListUIState = press.mantra.compose.ui.view.state.FeedListUIState.Loading, + synchronizationFilter: press.mantra.compose.database.model.types.SynchronizationFilter = _root_ide_package_.press.mantra.compose.database.model.types.SynchronizationFilter( kinds = arrayOf( TextNoteEvent.KIND, ReactionEvent.KIND, @@ -209,7 +209,7 @@ class InReplyToViewModel( ), since = createdAt ), - nostrRepository: at.torch.compose.repository.NostrRepository, + nostrRepository: press.mantra.compose.repository.NostrRepository, ): ViewModelProvider.Factory = viewModelFactory { initializer { InReplyToViewModel( diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/KeyPackageManagementViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/KeyPackageManagementViewModel.kt similarity index 91% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/KeyPackageManagementViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/KeyPackageManagementViewModel.kt index 294e7e0a..38e11c5f 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/KeyPackageManagementViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/KeyPackageManagementViewModel.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -8,9 +8,9 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewmodel.initializer import androidx.lifecycle.viewmodel.viewModelFactory -import at.torch.compose.database.model.MarmotKeyPackageBundle -import at.torch.compose.repository.MarmotRepository -import at.torch.compose.ui.view.state.KeyPackageManagementUIState +import press.mantra.compose.database.model.MarmotKeyPackageBundle +import press.mantra.compose.repository.MarmotRepository +import press.mantra.compose.ui.view.state.KeyPackageManagementUIState import com.vitorpamplona.quartz.nip01Core.core.HexKey import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.IO diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/MetadataEventDetailViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/MetadataEventDetailViewModel.kt similarity index 84% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/MetadataEventDetailViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/MetadataEventDetailViewModel.kt index 11cb18b5..9dfa54df 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/MetadataEventDetailViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/MetadataEventDetailViewModel.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model import androidx.compose.foundation.pager.PagerState import androidx.compose.runtime.MutableState @@ -10,9 +10,9 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewmodel.initializer import androidx.lifecycle.viewmodel.viewModelFactory -import at.torch.compose.database.model.NegentropySynchronizeRequest -import at.torch.compose.database.model.types.SynchronizationFilter -import at.torch.compose.nostr.Relays +import press.mantra.compose.database.model.NegentropySynchronizeRequest +import press.mantra.compose.database.model.types.SynchronizationFilter +import press.mantra.compose.nostr.Relays import co.touchlab.kermit.Logger import com.vitorpamplona.quartz.marmot.mip00KeyPackages.KeyPackageEvent import com.vitorpamplona.quartz.nip01Core.core.HexKey @@ -44,16 +44,16 @@ enum class MetadataEventDetailType { } class MetadataEventDetailViewModel( - initialMetadataEventDetailUIState: at.torch.compose.ui.view.state.MetadataEventDetailUIState = at.torch.compose.ui.view.state.MetadataEventDetailUIState.Loading, + initialMetadataEventDetailUIState: press.mantra.compose.ui.view.state.MetadataEventDetailUIState = press.mantra.compose.ui.view.state.MetadataEventDetailUIState.Loading, val activeUserPublicKey: HexKey, val eventPublicKey: HexKey, - val nostrRepository: at.torch.compose.repository.NostrRepository, + val nostrRepository: press.mantra.compose.repository.NostrRepository, val pagerState: PagerState ): ViewModel() { val isActionPending: MutableState = mutableStateOf(false) - var metadataEventDetailUIState: at.torch.compose.ui.view.state.MetadataEventDetailUIState by mutableStateOf(initialMetadataEventDetailUIState) + var metadataEventDetailUIState: press.mantra.compose.ui.view.state.MetadataEventDetailUIState by mutableStateOf(initialMetadataEventDetailUIState) private set val logger = Logger.withTag("MetadataEventDetailViewModel") @@ -99,7 +99,7 @@ class MetadataEventDetailViewModel( ).collect { relations -> logger.d("We found relations: $relations") - metadataEventDetailUIState = at.torch.compose.ui.view.state.MetadataEventDetailUIState.Loaded( + metadataEventDetailUIState = press.mantra.compose.ui.view.state.MetadataEventDetailUIState.Loaded( isActiveUser = isActiveUser(activeUserPublicKey), followingActiveUserConnection = relations.find { connection -> connection.sourcePublicKey == eventPublicKey && connection.destinationPublicKey == activeUserPublicKey }, followedByActiveUserConnection = relations.find { connection -> connection.sourcePublicKey == activeUserPublicKey && connection.destinationPublicKey == eventPublicKey } @@ -127,7 +127,7 @@ class MetadataEventDetailViewModel( metadataEventDetailType: MetadataEventDetailType ) = when (metadataEventDetailType) { MetadataEventDetailType.Posts -> { - _root_ide_package_.at.torch.compose.database.model.types.SynchronizationFilter( + _root_ide_package_.press.mantra.compose.database.model.types.SynchronizationFilter( authors = arrayOf( eventPublicKey ), @@ -139,7 +139,7 @@ class MetadataEventDetailViewModel( ) } MetadataEventDetailType.Replies -> { - _root_ide_package_.at.torch.compose.database.model.types.SynchronizationFilter( + _root_ide_package_.press.mantra.compose.database.model.types.SynchronizationFilter( authors = arrayOf( eventPublicKey ), @@ -152,7 +152,7 @@ class MetadataEventDetailViewModel( ) } MetadataEventDetailType.Articles -> { - _root_ide_package_.at.torch.compose.database.model.types.SynchronizationFilter( + _root_ide_package_.press.mantra.compose.database.model.types.SynchronizationFilter( authors = arrayOf( eventPublicKey ), @@ -163,7 +163,7 @@ class MetadataEventDetailViewModel( ) } MetadataEventDetailType.Followers -> { - _root_ide_package_.at.torch.compose.database.model.types.SynchronizationFilter( + _root_ide_package_.press.mantra.compose.database.model.types.SynchronizationFilter( authors = arrayOf( eventPublicKey ), @@ -175,7 +175,7 @@ class MetadataEventDetailViewModel( ) } MetadataEventDetailType.Following -> { - _root_ide_package_.at.torch.compose.database.model.types.SynchronizationFilter( + _root_ide_package_.press.mantra.compose.database.model.types.SynchronizationFilter( authors = arrayOf( eventPublicKey ), @@ -186,7 +186,7 @@ class MetadataEventDetailViewModel( ) } MetadataEventDetailType.Zaps -> { - _root_ide_package_.at.torch.compose.database.model.types.SynchronizationFilter( + _root_ide_package_.press.mantra.compose.database.model.types.SynchronizationFilter( authors = arrayOf( eventPublicKey ), @@ -198,7 +198,7 @@ class MetadataEventDetailViewModel( ) } MetadataEventDetailType.Photos -> { - _root_ide_package_.at.torch.compose.database.model.types.SynchronizationFilter( + _root_ide_package_.press.mantra.compose.database.model.types.SynchronizationFilter( authors = arrayOf( eventPublicKey ), @@ -209,7 +209,7 @@ class MetadataEventDetailViewModel( ) } MetadataEventDetailType.Shorts -> { - _root_ide_package_.at.torch.compose.database.model.types.SynchronizationFilter( + _root_ide_package_.press.mantra.compose.database.model.types.SynchronizationFilter( authors = arrayOf( eventPublicKey ), @@ -220,7 +220,7 @@ class MetadataEventDetailViewModel( ) } MetadataEventDetailType.Videos -> { - _root_ide_package_.at.torch.compose.database.model.types.SynchronizationFilter( + _root_ide_package_.press.mantra.compose.database.model.types.SynchronizationFilter( authors = arrayOf( eventPublicKey ), @@ -231,7 +231,7 @@ class MetadataEventDetailViewModel( ) } MetadataEventDetailType.Bookmarks -> { - _root_ide_package_.at.torch.compose.database.model.types.SynchronizationFilter( + _root_ide_package_.press.mantra.compose.database.model.types.SynchronizationFilter( authors = arrayOf( eventPublicKey ), @@ -242,7 +242,7 @@ class MetadataEventDetailViewModel( ) } MetadataEventDetailType.Reports -> { - _root_ide_package_.at.torch.compose.database.model.types.SynchronizationFilter( + _root_ide_package_.press.mantra.compose.database.model.types.SynchronizationFilter( authors = arrayOf( eventPublicKey ), @@ -253,7 +253,7 @@ class MetadataEventDetailViewModel( ) } MetadataEventDetailType.Relays -> { - _root_ide_package_.at.torch.compose.database.model.types.SynchronizationFilter( + _root_ide_package_.press.mantra.compose.database.model.types.SynchronizationFilter( authors = arrayOf( eventPublicKey ), @@ -298,7 +298,7 @@ class MetadataEventDetailViewModel( followUsers.map { it } nostrRepository.saveUnsignedNostrEvent( - _root_ide_package_.at.torch.compose.database.model.UnsignedNostrEvent( + _root_ide_package_.press.mantra.compose.database.model.UnsignedNostrEvent( pubKey = activeUserPublicKey, kind = ContactListEvent.KIND, tags = contactListTagList.toTypedArray(), @@ -310,7 +310,7 @@ class MetadataEventDetailViewModel( } } - fun unfollow(connection: at.torch.compose.database.model.Connection) { + fun unfollow(connection: press.mantra.compose.database.model.Connection) { isActionPending.value = true viewModelScope.launch(Dispatchers.IO) { @@ -325,7 +325,7 @@ class MetadataEventDetailViewModel( logger.d("User is not being followed so no need to unfollow: $eventPublicKey") } else { nostrRepository.saveUnsignedNostrEvent( - _root_ide_package_.at.torch.compose.database.model.UnsignedNostrEvent( + _root_ide_package_.press.mantra.compose.database.model.UnsignedNostrEvent( pubKey = activeUserPublicKey, kind = ContactListEvent.KIND, tags = contactListEvent.tags.filter { it.size > 1 && it[1] != eventPublicKey } @@ -349,7 +349,7 @@ class MetadataEventDetailViewModel( fun factory( activeUserPublicKey: HexKey, publicKey: HexKey, - nostrRepository: at.torch.compose.repository.NostrRepository, + nostrRepository: press.mantra.compose.repository.NostrRepository, pagerState: PagerState ): ViewModelProvider.Factory = viewModelFactory { initializer { diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/NavigationViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/NavigationViewModel.kt similarity index 95% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/NavigationViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/NavigationViewModel.kt index 583012f0..454feb3d 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/NavigationViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/NavigationViewModel.kt @@ -1,12 +1,12 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewmodel.initializer import androidx.lifecycle.viewmodel.viewModelFactory -import at.torch.compose.database.model.intermdiate.LocalAccount -import at.torch.compose.ui.composable.navigation.routes.SovereignWalletStartupRoute -import at.torch.compose.ui.view.state.NavigationUIState +import press.mantra.compose.database.model.intermdiate.LocalAccount +import press.mantra.compose.ui.composable.navigation.routes.SovereignWalletStartupRoute +import press.mantra.compose.ui.view.state.NavigationUIState import co.touchlab.kermit.Logger import fr.acinq.phoenix.data.ActiveWallet import fr.acinq.phoenix.managers.nostrPublicKey @@ -26,7 +26,7 @@ import kotlin.time.Duration.Companion.milliseconds class NavigationViewModel( val activeWalletStateFlow: StateFlow, initialNavigationUIState: NavigationUIState, - val nostrRepository: at.torch.compose.repository.NostrRepository, + val nostrRepository: press.mantra.compose.repository.NostrRepository, val scope: CoroutineScope, ): ViewModel() { @@ -36,7 +36,7 @@ class NavigationViewModel( fun factory( activeWallet: StateFlow, initialNavigationUIState: NavigationUIState, - nostrRepository: at.torch.compose.repository.NostrRepository, + nostrRepository: press.mantra.compose.repository.NostrRepository, scope: CoroutineScope, ): ViewModelProvider.Factory = viewModelFactory { initializer { diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/NostrEventDetailViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/NostrEventDetailViewModel.kt similarity index 72% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/NostrEventDetailViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/NostrEventDetailViewModel.kt index 3f7cc1bc..fbbe0433 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/NostrEventDetailViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/NostrEventDetailViewModel.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -21,14 +21,14 @@ import kotlinx.coroutines.launch class NostrEventDetailViewModel( val activeUserPublicKey: HexKey, val nostrEventId: HexKey, - initialNostrEventDetailUIState: at.torch.compose.ui.view.state.NostrEventDetailUIState, - val nostrRepository: at.torch.compose.repository.NostrRepository + initialNostrEventDetailUIState: press.mantra.compose.ui.view.state.NostrEventDetailUIState, + val nostrRepository: press.mantra.compose.repository.NostrRepository ): ViewModel() { - var nostrEventDetailUIState: at.torch.compose.ui.view.state.NostrEventDetailUIState by mutableStateOf(initialNostrEventDetailUIState) + var nostrEventDetailUIState: press.mantra.compose.ui.view.state.NostrEventDetailUIState by mutableStateOf(initialNostrEventDetailUIState) private set fun retryLoad() { - nostrEventDetailUIState = at.torch.compose.ui.view.state.NostrEventDetailUIState.Loading + nostrEventDetailUIState = press.mantra.compose.ui.view.state.NostrEventDetailUIState.Loading loadNostrFeed() } @@ -36,11 +36,11 @@ class NostrEventDetailViewModel( viewModelScope.launch(Dispatchers.IO) { // Sync Notifications... might want to also run this in the background nostrRepository.queueSynchronizeNostrEvent( - at.torch.compose.nostr.Relays.DefaultDMRelayList.take(1).map { normalizedRelay -> // TODO: Sync from all relays instead of 1 - _root_ide_package_.at.torch.compose.database.model.SynchronizeNostrEventRequest( + press.mantra.compose.nostr.Relays.DefaultDMRelayList.take(1).map { normalizedRelay -> // TODO: Sync from all relays instead of 1 + _root_ide_package_.press.mantra.compose.database.model.SynchronizeNostrEventRequest( purpose = "detail", synchronizationFilters = arrayOf( - _root_ide_package_.at.torch.compose.database.model.types.SynchronizationFilter( + _root_ide_package_.press.mantra.compose.database.model.types.SynchronizationFilter( kinds = arrayOf( TextNoteEvent.KIND, RepostEvent.KIND, @@ -69,11 +69,11 @@ class NostrEventDetailViewModel( nostrEventId ).collectLatest { localNostrEvent -> nostrEventDetailUIState = if (localNostrEvent != null) { - at.torch.compose.ui.view.state.NostrEventDetailUIState.Loaded( + press.mantra.compose.ui.view.state.NostrEventDetailUIState.Loaded( localNostrEvent = localNostrEvent ) } else { - at.torch.compose.ui.view.state.NostrEventDetailUIState.Error + press.mantra.compose.ui.view.state.NostrEventDetailUIState.Error } } } @@ -85,8 +85,8 @@ class NostrEventDetailViewModel( fun factory( nostrEventId: HexKey, activeUserPublicKey: HexKey, - initialNostrEventDetailUIState: at.torch.compose.ui.view.state.NostrEventDetailUIState = at.torch.compose.ui.view.state.NostrEventDetailUIState.Loading, - nostrRepository: at.torch.compose.repository.NostrRepository, + initialNostrEventDetailUIState: press.mantra.compose.ui.view.state.NostrEventDetailUIState = press.mantra.compose.ui.view.state.NostrEventDetailUIState.Loading, + nostrRepository: press.mantra.compose.repository.NostrRepository, ): ViewModelProvider.Factory = viewModelFactory { initializer { NostrEventDetailViewModel( diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/NotaryViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/NotaryViewModel.kt similarity index 92% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/NotaryViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/NotaryViewModel.kt index 89a90cca..86a40937 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/NotaryViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/NotaryViewModel.kt @@ -1,10 +1,10 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewmodel.initializer import androidx.lifecycle.viewmodel.viewModelFactory -import at.torch.compose.repository.MarmotRepository +import press.mantra.compose.repository.MarmotRepository import co.touchlab.kermit.Logger import com.vitorpamplona.quartz.nip01Core.core.Event import com.vitorpamplona.quartz.nip01Core.core.toHexKey @@ -24,8 +24,8 @@ import kotlin.time.Instant class NotaryViewModel( val activeWalletStateFlow: StateFlow, - val nostrRepository: at.torch.compose.repository.NostrRepository, - val chatRepository: at.torch.compose.repository.ChatRepository, + val nostrRepository: press.mantra.compose.repository.NostrRepository, + val chatRepository: press.mantra.compose.repository.ChatRepository, val marmotRepository: MarmotRepository, val scope: CoroutineScope, ): ViewModel() { @@ -36,8 +36,8 @@ class NotaryViewModel( fun factory( activeWalletStateFlow: StateFlow, - nostrRepository: at.torch.compose.repository.NostrRepository, - chatRepository: at.torch.compose.repository.ChatRepository, + nostrRepository: press.mantra.compose.repository.NostrRepository, + chatRepository: press.mantra.compose.repository.ChatRepository, marmotRepository: MarmotRepository, scope: CoroutineScope, ): ViewModelProvider.Factory = viewModelFactory { @@ -99,7 +99,7 @@ class NotaryViewModel( nostrRepository.publishNostrEvent( unsignedNostrEvent, - _root_ide_package_.at.torch.compose.database.model.NostrEvent( + _root_ide_package_.press.mantra.compose.database.model.NostrEvent( id = event.id, pubKey = event.pubKey, kind = event.kind, @@ -109,7 +109,7 @@ class NotaryViewModel( sig = event.sig, unsignedNostrEventId = unsignedNostrEvent.id ), - relayURLs = at.torch.compose.nostr.Relays.DefaultDMRelayList.map { normalizedRelayUrl -> normalizedRelayUrl.url }, + relayURLs = press.mantra.compose.nostr.Relays.DefaultDMRelayList.map { normalizedRelayUrl -> normalizedRelayUrl.url }, activeKeyPair = keyPair ) } diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/SearchMemberToAddToChatRoomViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/SearchMemberToAddToChatRoomViewModel.kt similarity index 90% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/SearchMemberToAddToChatRoomViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/SearchMemberToAddToChatRoomViewModel.kt index cfece857..f97dc8ca 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/SearchMemberToAddToChatRoomViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/SearchMemberToAddToChatRoomViewModel.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model import androidx.compose.runtime.MutableState import androidx.compose.runtime.getValue @@ -9,13 +9,13 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewmodel.initializer import androidx.lifecycle.viewmodel.viewModelFactory -import at.torch.compose.database.model.NegentropySynchronizeRequest -import at.torch.compose.database.model.Profile -import at.torch.compose.database.model.types.SynchronizationFilter -import at.torch.compose.nostr.Relays -import at.torch.compose.repository.ChatRepository -import at.torch.compose.repository.NostrRepository -import at.torch.compose.ui.view.state.SearchMemberToAddToChatRoomUIState +import press.mantra.compose.database.model.NegentropySynchronizeRequest +import press.mantra.compose.database.model.Profile +import press.mantra.compose.database.model.types.SynchronizationFilter +import press.mantra.compose.nostr.Relays +import press.mantra.compose.repository.ChatRepository +import press.mantra.compose.repository.NostrRepository +import press.mantra.compose.ui.view.state.SearchMemberToAddToChatRoomUIState import co.touchlab.kermit.Logger import com.vitorpamplona.quartz.marmot.mip00KeyPackages.KeyPackageEvent import com.vitorpamplona.quartz.nip01Core.core.HexKey diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/SearchResultViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/SearchResultViewModel.kt similarity index 84% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/SearchResultViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/SearchResultViewModel.kt index 1d0fa527..1ae253a3 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/SearchResultViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/SearchResultViewModel.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -8,14 +8,11 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewmodel.initializer import androidx.lifecycle.viewmodel.viewModelFactory -import at.torch.compose.database.model.types.SynchronizationFilter -import at.torch.compose.extensions.assureValidNpub -import at.torch.compose.extensions.bech32ToHexOrNull -import at.torch.compose.extensions.bech32ToHexOrThrow -import at.torch.compose.ui.view.state.SearchResultListUIState +import press.mantra.compose.database.model.types.SynchronizationFilter +import press.mantra.compose.extensions.bech32ToHexOrNull +import press.mantra.compose.ui.view.state.SearchResultListUIState import co.touchlab.kermit.Logger import com.vitorpamplona.quartz.nip01Core.metadata.MetadataEvent -import com.vitorpamplona.quartz.nip19Bech32.bech32.bechToBytes import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.IO import kotlinx.coroutines.flow.distinctUntilChanged @@ -28,8 +25,8 @@ enum class SearchResultType { class SearchResultViewModel( initialSearchResultType: SearchResultType, val searchQuery: String, - val nostrRepository: at.torch.compose.repository.NostrRepository, - val searchRepository: at.torch.compose.repository.SearchRepository, + val nostrRepository: press.mantra.compose.repository.NostrRepository, + val searchRepository: press.mantra.compose.repository.SearchRepository, ): ViewModel() { val logger = Logger.withTag(TAG) @@ -104,8 +101,8 @@ class SearchResultViewModel( viewModelScope.launch(Dispatchers.IO) { // Sync Notifications... might want to also run this in the background searchRepository.submitSearch( - at.torch.compose.nostr.Relays.eventFinderRelaySet.map { normalizedRelay -> // TODO: Search all relays instead of the first - _root_ide_package_.at.torch.compose.database.model.SynchronizeNostrEventRequest( + press.mantra.compose.nostr.Relays.eventFinderRelaySet.map { normalizedRelay -> // TODO: Search all relays instead of the first + _root_ide_package_.press.mantra.compose.database.model.SynchronizeNostrEventRequest( purpose = "search", synchronizationFilters = arrayOf( synchronizationFilter @@ -136,8 +133,8 @@ class SearchResultViewModel( fun factory( initialSearchResultType: SearchResultType = SearchResultType.Profiles, searchQuery: String, - nostrRepository: at.torch.compose.repository.NostrRepository, - searchRepository: at.torch.compose.repository.SearchRepository, + nostrRepository: press.mantra.compose.repository.NostrRepository, + searchRepository: press.mantra.compose.repository.SearchRepository, ): ViewModelProvider.Factory = viewModelFactory { initializer { SearchResultViewModel( diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/SearchViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/SearchViewModel.kt similarity index 67% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/SearchViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/SearchViewModel.kt index 3f0aab5f..e910ddd7 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/SearchViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/SearchViewModel.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateListOf @@ -15,22 +15,22 @@ import kotlinx.coroutines.IO import kotlinx.coroutines.launch class SearchViewModel( - initialSearchUIState: at.torch.compose.ui.view.state.SearchUIState, - val nostrRepository: at.torch.compose.repository.NostrRepository, - val searchRepository: at.torch.compose.repository.SearchRepository, + initialSearchUIState: press.mantra.compose.ui.view.state.SearchUIState, + val nostrRepository: press.mantra.compose.repository.NostrRepository, + val searchRepository: press.mantra.compose.repository.SearchRepository, ): ViewModel() { val logger = Logger.withTag(TAG) - var searchUIState: at.torch.compose.ui.view.state.SearchUIState by mutableStateOf(initialSearchUIState) + var searchUIState: press.mantra.compose.ui.view.state.SearchUIState by mutableStateOf(initialSearchUIState) private set - var searchableProfiles = mutableStateListOf() + var searchableProfiles = mutableStateListOf() private set - var filteredProfiles = mutableStateListOf() + var filteredProfiles = mutableStateListOf() private set - var recentSearches = mutableStateListOf() + var recentSearches = mutableStateListOf() private set init { @@ -65,7 +65,7 @@ class SearchViewModel( } } - fun removeRecentSearch(recentSearch: at.torch.compose.database.model.RecentSearch) { + fun removeRecentSearch(recentSearch: press.mantra.compose.database.model.RecentSearch) { viewModelScope.launch(Dispatchers.IO) { nostrRepository.removeRecentSearch(recentSearch) recentSearches.remove(recentSearch) @@ -76,9 +76,9 @@ class SearchViewModel( const val TAG = "SearchViewModel" fun factory( - initialSearchUIState: at.torch.compose.ui.view.state.SearchUIState = at.torch.compose.ui.view.state.SearchUIState.Prompt, - nostrRepository: at.torch.compose.repository.NostrRepository, - searchRepository: at.torch.compose.repository.SearchRepository, + initialSearchUIState: press.mantra.compose.ui.view.state.SearchUIState = press.mantra.compose.ui.view.state.SearchUIState.Prompt, + nostrRepository: press.mantra.compose.repository.NostrRepository, + searchRepository: press.mantra.compose.repository.SearchRepository, ): ViewModelProvider.Factory = viewModelFactory { initializer { SearchViewModel( diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/ShareProfileViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/ShareProfileViewModel.kt similarity index 86% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/ShareProfileViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/ShareProfileViewModel.kt index fa9db139..d79938cb 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/ShareProfileViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/ShareProfileViewModel.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -8,10 +8,10 @@ import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewmodel.initializer import androidx.lifecycle.viewmodel.viewModelFactory -import at.torch.compose.database.model.BroadcastNostrEventRequest -import at.torch.compose.database.model.intermdiate.LocalNostrEvent -import at.torch.compose.nostr.Relays -import at.torch.compose.ui.view.state.ShareProfileUIState +import press.mantra.compose.database.model.BroadcastNostrEventRequest +import press.mantra.compose.database.model.intermdiate.LocalNostrEvent +import press.mantra.compose.nostr.Relays +import press.mantra.compose.ui.view.state.ShareProfileUIState import com.vitorpamplona.quartz.nip01Core.core.HexKey import com.vitorpamplona.quartz.nip01Core.metadata.MetadataEvent import kotlinx.coroutines.Dispatchers @@ -23,7 +23,7 @@ class ShareProfileViewModel( val activeUserPublicKey: HexKey, val nostrEventId: HexKey, initialActiveProfileUIState: ShareProfileUIState, - val nostrRepository: at.torch.compose.repository.NostrRepository + val nostrRepository: press.mantra.compose.repository.NostrRepository ): ViewModel() { var shareProfileUIState: ShareProfileUIState by mutableStateOf(initialActiveProfileUIState) private set @@ -72,7 +72,7 @@ class ShareProfileViewModel( nostrEventId: HexKey, activeUserPublicKey: HexKey, initialActiveProfileUIState: ShareProfileUIState = ShareProfileUIState.Loading, - nostrRepository: at.torch.compose.repository.NostrRepository, + nostrRepository: press.mantra.compose.repository.NostrRepository, ): ViewModelProvider.Factory = viewModelFactory { initializer { ShareProfileViewModel( diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/SignInToProfileViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/SignInToProfileViewModel.kt similarity index 77% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/SignInToProfileViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/SignInToProfileViewModel.kt index ccd0934f..252b693f 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/SignInToProfileViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/SignInToProfileViewModel.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model import androidx.compose.runtime.MutableState import androidx.compose.runtime.mutableStateOf @@ -17,16 +17,16 @@ import kotlinx.coroutines.IO import kotlinx.coroutines.launch class SignInToProfileViewModel( - initialWriteNewNoteUIState: at.torch.compose.ui.view.state.SignInToProfileUIState, - val signInToProfileFormState: at.torch.compose.ui.view.state.form.SignInToProfileFormState = _root_ide_package_.at.torch.compose.ui.view.state.form.SignInToProfileFormState(), - val nostrRepository: at.torch.compose.repository.NostrRepository + initialWriteNewNoteUIState: press.mantra.compose.ui.view.state.SignInToProfileUIState, + val signInToProfileFormState: press.mantra.compose.ui.view.state.form.SignInToProfileFormState = _root_ide_package_.press.mantra.compose.ui.view.state.form.SignInToProfileFormState(), + val nostrRepository: press.mantra.compose.repository.NostrRepository ): ViewModel() { companion object { private const val TAG = "SignInToProfileViewModel" fun factory( - initialWriteNewNoteUIState: at.torch.compose.ui.view.state.SignInToProfileUIState, - nostrRepository: at.torch.compose.repository.NostrRepository + initialWriteNewNoteUIState: press.mantra.compose.ui.view.state.SignInToProfileUIState, + nostrRepository: press.mantra.compose.repository.NostrRepository ): ViewModelProvider.Factory = viewModelFactory { initializer { SignInToProfileViewModel( @@ -41,7 +41,7 @@ class SignInToProfileViewModel( val isActionPending: MutableState = mutableStateOf(false) - var signInToProfileUIState: MutableState = mutableStateOf( + var signInToProfileUIState: MutableState = mutableStateOf( initialWriteNewNoteUIState ) @@ -78,7 +78,7 @@ class SignInToProfileViewModel( } else -> { // TODO: Might want to give reasons for the error. - signInToProfileUIState.value = at.torch.compose.ui.view.state.SignInToProfileUIState.Error + signInToProfileUIState.value = press.mantra.compose.ui.view.state.SignInToProfileUIState.Error } } diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/SovereignWalletStartupViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/SovereignWalletStartupViewModel.kt similarity index 90% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/SovereignWalletStartupViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/SovereignWalletStartupViewModel.kt index 9784fe95..2b9baddb 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/SovereignWalletStartupViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/SovereignWalletStartupViewModel.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model import androidx.compose.runtime.mutableStateOf import androidx.lifecycle.ViewModel @@ -48,11 +48,11 @@ class SovereignWalletStartupViewModel( state.value = StartupViewState.StartingBusiness(walletId) val startResult: StartBusinessResult = - _root_ide_package_.at.torch.compose.extensions.platformStartupLogic( + _root_ide_package_.press.mantra.compose.extensions.platformStartupLogic( words ) - _root_ide_package_.at.torch.compose.extensions.schedulePlatformLogic( + _root_ide_package_.press.mantra.compose.extensions.schedulePlatformLogic( phoenixGlobal = phoenixGlobal, ) when (startResult) { @@ -69,7 +69,7 @@ class SovereignWalletStartupViewModel( } fun getShowIntroFlow(): Flow { - return _root_ide_package_.at.torch.compose.extensions.getShowIntroFlow(phoenixGlobal) + return _root_ide_package_.press.mantra.compose.extensions.getShowIntroFlow(phoenixGlobal) } companion object { diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/SovereignWalletViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/SovereignWalletViewModel.kt similarity index 94% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/SovereignWalletViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/SovereignWalletViewModel.kt index 20fe4ce6..56905778 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/SovereignWalletViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/SovereignWalletViewModel.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -81,17 +81,17 @@ class SovereignWalletViewModel( val exchangeRates = phoenixGlobal.currencyManager.ratesFlow .stateIn(viewModelScope, started = SharingStarted.Lazily, initialValue = emptyList()) - var walletUIState: at.torch.compose.ui.view.state.SovereignWalletUIState by mutableStateOf( - at.torch.compose.ui.view.state.SovereignWalletUIState.Loading) + var walletUIState: press.mantra.compose.ui.view.state.SovereignWalletUIState by mutableStateOf( + press.mantra.compose.ui.view.state.SovereignWalletUIState.Loading) private set fun retryLoad() { - walletUIState = at.torch.compose.ui.view.state.SovereignWalletUIState.Loading + walletUIState = press.mantra.compose.ui.view.state.SovereignWalletUIState.Loading } fun loadSovereignData(walletId: WalletId) { - walletUIState = at.torch.compose.ui.view.state.SovereignWalletUIState.Success( + walletUIState = press.mantra.compose.ui.view.state.SovereignWalletUIState.Success( publicKey = walletId.nodeIdHash, balanceInSatoshis = 0 // TODO: Get balance... ) @@ -158,7 +158,7 @@ class SovereignWalletViewModel( phoenixGlobal = phoenixGlobal, walletId = walletId, name = null, - avatar = at.torch.compose.ui.composable.widgets.wallet.WalletAvatars.list.random(), + avatar = press.mantra.compose.ui.composable.widgets.wallet.WalletAvatars.list.random(), isHidden = false ) } @@ -213,7 +213,7 @@ class SovereignWalletViewModel( } fun getGlobalPrefs(): GlobalPrefs { - return _root_ide_package_.at.torch.compose.extensions.getGlobalPrefs( + return _root_ide_package_.press.mantra.compose.extensions.getGlobalPrefs( phoenixGlobal ) } diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/SynchronizationViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/SynchronizationViewModel.kt similarity index 96% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/SynchronizationViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/SynchronizationViewModel.kt index 587f9bb5..74504d20 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/SynchronizationViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/SynchronizationViewModel.kt @@ -1,21 +1,21 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.viewmodel.initializer import androidx.lifecycle.viewmodel.viewModelFactory -import at.torch.compose.database.model.BroadcastNostrEventRequest -import at.torch.compose.database.model.SynchronizeNostrEventRequest -import at.torch.compose.database.model.types.SynchronizationFilter -import at.torch.compose.network.dto.toRelayDTO -import at.torch.compose.network.relays.RelayPool -import at.torch.compose.network.relays.RelaysSocketManager -import at.torch.compose.network.sockets.NostrIncomingMessage -import at.torch.compose.network.sockets.NostrSocketClientFactory -import at.torch.compose.repository.CachingImportRepository -import at.torch.compose.repository.ChatRepository -import at.torch.compose.repository.NostrRepository -import at.torch.compose.repository.RelayRepository +import press.mantra.compose.database.model.BroadcastNostrEventRequest +import press.mantra.compose.database.model.SynchronizeNostrEventRequest +import press.mantra.compose.database.model.types.SynchronizationFilter +import press.mantra.compose.network.dto.toRelayDTO +import press.mantra.compose.network.relays.RelayPool +import press.mantra.compose.network.relays.RelaysSocketManager +import press.mantra.compose.network.sockets.NostrIncomingMessage +import press.mantra.compose.network.sockets.NostrSocketClientFactory +import press.mantra.compose.repository.CachingImportRepository +import press.mantra.compose.repository.ChatRepository +import press.mantra.compose.repository.NostrRepository +import press.mantra.compose.repository.RelayRepository import co.touchlab.kermit.Logger import com.vitorpamplona.negentropy.Negentropy import com.vitorpamplona.negentropy.storage.StorageVector diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/UnqueuedProfileSynchronizationViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/UnqueuedProfileSynchronizationViewModel.kt similarity index 86% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/UnqueuedProfileSynchronizationViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/UnqueuedProfileSynchronizationViewModel.kt index fff1a721..0ce79a32 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/UnqueuedProfileSynchronizationViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/UnqueuedProfileSynchronizationViewModel.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model import androidx.compose.runtime.MutableState import androidx.compose.runtime.mutableStateOf @@ -24,7 +24,7 @@ import kotlinx.coroutines.launch class UnqueuedProfileSynchronizationViewModel( val unsignedNostrEventId: Long, val profilePublicKey: String, - val nostrRepository: at.torch.compose.repository.NostrRepository + val nostrRepository: press.mantra.compose.repository.NostrRepository ): ViewModel() { companion object { private const val TAG = "UnqueuedProfileSynchronizationViewModel" @@ -32,7 +32,7 @@ class UnqueuedProfileSynchronizationViewModel( fun factory( unsignedNostrEventId: Long, profilePublicKey: String, - nostrRepository: at.torch.compose.repository.NostrRepository + nostrRepository: press.mantra.compose.repository.NostrRepository ): ViewModelProvider.Factory = viewModelFactory { initializer { UnqueuedProfileSynchronizationViewModel( @@ -55,11 +55,11 @@ class UnqueuedProfileSynchronizationViewModel( delay(2_000) nostrRepository.queueSynchronizeNostrEvent( - at.torch.compose.nostr.Relays.DefaultDMRelayList.map { normalizedRelayUrl -> - _root_ide_package_.at.torch.compose.database.model.SynchronizeNostrEventRequest( + press.mantra.compose.nostr.Relays.DefaultDMRelayList.map { normalizedRelayUrl -> + _root_ide_package_.press.mantra.compose.database.model.SynchronizeNostrEventRequest( purpose = "sign-in", synchronizationFilters = arrayOf( - _root_ide_package_.at.torch.compose.database.model.types.SynchronizationFilter( + _root_ide_package_.press.mantra.compose.database.model.types.SynchronizationFilter( authors = arrayOf(profilePublicKey), kinds = arrayOf( MetadataEvent.KIND, diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/WriteNewNoteViewModel.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/WriteNewNoteViewModel.kt similarity index 73% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/WriteNewNoteViewModel.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/WriteNewNoteViewModel.kt index 0d7ca900..69a72b38 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/model/WriteNewNoteViewModel.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/model/WriteNewNoteViewModel.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model import androidx.compose.runtime.MutableState import androidx.compose.runtime.getValue @@ -24,9 +24,9 @@ class WriteNewNoteViewModel( val replyToNostrEventId: HexKey?, val quotedNostrEventId: HexKey?, - initialWriteNewNoteUIState: at.torch.compose.ui.view.state.WriteNewNoteUIState, - val writeNewNoteFormState: at.torch.compose.ui.view.state.form.WriteNewNoteFormState = _root_ide_package_.at.torch.compose.ui.view.state.form.WriteNewNoteFormState(), - val nostrRepository: at.torch.compose.repository.NostrRepository + initialWriteNewNoteUIState: press.mantra.compose.ui.view.state.WriteNewNoteUIState, + val writeNewNoteFormState: press.mantra.compose.ui.view.state.form.WriteNewNoteFormState = _root_ide_package_.press.mantra.compose.ui.view.state.form.WriteNewNoteFormState(), + val nostrRepository: press.mantra.compose.repository.NostrRepository ): ViewModel() { companion object { private const val TAG = "WriteNewNoteViewModel" @@ -35,8 +35,8 @@ class WriteNewNoteViewModel( activeUserPublicKey: HexKey, replyToNostrEventId: HexKey?, quotedNostrEventId: HexKey?, - initialWriteNewNoteUIState: at.torch.compose.ui.view.state.WriteNewNoteUIState, - nostrRepository: at.torch.compose.repository.NostrRepository, + initialWriteNewNoteUIState: press.mantra.compose.ui.view.state.WriteNewNoteUIState, + nostrRepository: press.mantra.compose.repository.NostrRepository, ): ViewModelProvider.Factory = viewModelFactory { initializer { WriteNewNoteViewModel( @@ -54,13 +54,13 @@ class WriteNewNoteViewModel( val isActionPending: MutableState = mutableStateOf(false) - var writeNewNoteUIState: at.torch.compose.ui.view.state.WriteNewNoteUIState by mutableStateOf(initialWriteNewNoteUIState) + var writeNewNoteUIState: press.mantra.compose.ui.view.state.WriteNewNoteUIState by mutableStateOf(initialWriteNewNoteUIState) private set - var mentionableProfiles = mutableStateListOf() + var mentionableProfiles = mutableStateListOf() private set - var mentionedProfiles = mutableStateListOf() + var mentionedProfiles = mutableStateListOf() private set var atSymbolRange = mutableStateOf(null) @@ -78,7 +78,7 @@ class WriteNewNoteViewModel( } } - fun addProfileToMentionedProfiles(profile: at.torch.compose.database.model.Profile) { + fun addProfileToMentionedProfiles(profile: press.mantra.compose.database.model.Profile) { atSymbolRange.value?.let { range -> mentionedProfiles.add(profile) writeNewNoteFormState.textFieldForm.textFieldState.edit { @@ -121,27 +121,27 @@ class WriteNewNoteViewModel( activePublicKey ).collect { profileWithFollowing -> writeNewNoteUIState = if (profileWithFollowing != null) { - at.torch.compose.ui.view.state.WriteNewNoteUIState.InputPrompt( + press.mantra.compose.ui.view.state.WriteNewNoteUIState.InputPrompt( localProfile = profileWithFollowing, inReplyToNostrEvent = nostrEventBeingRepliedTo, quotedNostrEvent = nostrEventBeingQuoted ) } else { - at.torch.compose.ui.view.state.WriteNewNoteUIState.Error + press.mantra.compose.ui.view.state.WriteNewNoteUIState.Error } } } } fun confirmNote( - localProfile: at.torch.compose.database.model.intermdiate.LocalProfileWithFollowing, - inReplyToNostrEvent: at.torch.compose.database.model.intermdiate.LocalNostrEvent?, - quotedNostrEvent: at.torch.compose.database.model.intermdiate.LocalNostrEvent? + localProfile: press.mantra.compose.database.model.intermdiate.LocalProfileWithFollowing, + inReplyToNostrEvent: press.mantra.compose.database.model.intermdiate.LocalNostrEvent?, + quotedNostrEvent: press.mantra.compose.database.model.intermdiate.LocalNostrEvent? ) { validateInput().let { isInputValid -> if (isInputValid) { writeNewNoteUIState = - at.torch.compose.ui.view.state.WriteNewNoteUIState.ConfirmNote( + press.mantra.compose.ui.view.state.WriteNewNoteUIState.ConfirmNote( localProfile = localProfile, inReplyToNostrEvent = inReplyToNostrEvent, quotedNostrEvent = quotedNostrEvent, @@ -165,16 +165,16 @@ class WriteNewNoteViewModel( fun createNewNote( activeUserPublicKey: HexKey, onNostrEventPublished: () -> Unit, - inReplyToNostrEvent: at.torch.compose.database.model.intermdiate.LocalNostrEvent? = null, - quotedNostrEvent: at.torch.compose.database.model.intermdiate.LocalNostrEvent? = null, + inReplyToNostrEvent: press.mantra.compose.database.model.intermdiate.LocalNostrEvent? = null, + quotedNostrEvent: press.mantra.compose.database.model.intermdiate.LocalNostrEvent? = null, ) { logger.d { "createAccount" } isActionPending.value = true viewModelScope.launch(Dispatchers.IO) { - val mentionedPublicKeys = at.torch.compose.ui.composable.widgets.content.ContentParser.parse( + val mentionedPublicKeys = press.mantra.compose.ui.composable.widgets.content.ContentParser.parse( writeNewNoteFormState.textFieldForm.textFieldState.text.toString(), - ).filterIsInstance().map { it.pubkey } + ).filterIsInstance().map { it.pubkey } nostrRepository.createNewTextNote( publicKey = activeUserPublicKey, @@ -183,7 +183,7 @@ class WriteNewNoteViewModel( inReplyToNostrEvent = inReplyToNostrEvent, quotedNostrEvent = quotedNostrEvent, onError = { - writeNewNoteUIState = at.torch.compose.ui.view.state.WriteNewNoteUIState.Error + writeNewNoteUIState = press.mantra.compose.ui.view.state.WriteNewNoteUIState.Error }, onSuccess = onNostrEventPublished ) diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/ActiveProfileUIState.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/ActiveProfileUIState.kt similarity index 63% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/ActiveProfileUIState.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/ActiveProfileUIState.kt index 5a34849e..25da96db 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/ActiveProfileUIState.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/ActiveProfileUIState.kt @@ -1,8 +1,8 @@ -package at.torch.compose.ui.view.state +package press.mantra.compose.ui.view.state sealed interface ActiveProfileUIState { data class Loaded( - val localNostrEvent: at.torch.compose.database.model.intermdiate.LocalNostrEvent + val localNostrEvent: press.mantra.compose.database.model.intermdiate.LocalNostrEvent ): ActiveProfileUIState data object Error: ActiveProfileUIState diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/AddMemberToChatRoomConfirmationUIState.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/AddMemberToChatRoomConfirmationUIState.kt similarity index 59% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/AddMemberToChatRoomConfirmationUIState.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/AddMemberToChatRoomConfirmationUIState.kt index 2f7cd429..f13cab88 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/AddMemberToChatRoomConfirmationUIState.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/AddMemberToChatRoomConfirmationUIState.kt @@ -1,9 +1,8 @@ -package at.torch.compose.ui.view.state +package press.mantra.compose.ui.view.state -import at.torch.compose.database.model.MarmotKeyPackage -import at.torch.compose.database.model.Profile -import at.torch.compose.database.model.intermdiate.LocalChatRoom -import com.vitorpamplona.quartz.marmot.mip00KeyPackages.KeyPackageEvent +import press.mantra.compose.database.model.MarmotKeyPackage +import press.mantra.compose.database.model.Profile +import press.mantra.compose.database.model.intermdiate.LocalChatRoom sealed interface AddMemberToChatRoomConfirmationUIState { data class Loaded( diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/ChatMessageListUIState.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/ChatMessageListUIState.kt similarity index 68% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/ChatMessageListUIState.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/ChatMessageListUIState.kt index e49862da..4c8ff48e 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/ChatMessageListUIState.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/ChatMessageListUIState.kt @@ -1,6 +1,6 @@ -package at.torch.compose.ui.view.state +package press.mantra.compose.ui.view.state -import at.torch.compose.database.model.intermdiate.LocalChatMessage +import press.mantra.compose.database.model.intermdiate.LocalChatMessage sealed interface ChatMessageListUIState { data class Loaded( diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/ChatRoomDetailUIState.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/ChatRoomDetailUIState.kt similarity index 70% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/ChatRoomDetailUIState.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/ChatRoomDetailUIState.kt index 92bef528..aad05287 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/ChatRoomDetailUIState.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/ChatRoomDetailUIState.kt @@ -1,6 +1,6 @@ -package at.torch.compose.ui.view.state +package press.mantra.compose.ui.view.state -import at.torch.compose.database.model.intermdiate.LocalChatRoom +import press.mantra.compose.database.model.intermdiate.LocalChatRoom sealed interface ChatRoomDetailUIState { data class Loaded( diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/ChatRoomListUIState.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/ChatRoomListUIState.kt similarity index 57% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/ChatRoomListUIState.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/ChatRoomListUIState.kt index e1140f1c..276ddf90 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/ChatRoomListUIState.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/ChatRoomListUIState.kt @@ -1,8 +1,8 @@ -package at.torch.compose.ui.view.state +package press.mantra.compose.ui.view.state sealed interface ChatRoomListUIState { data class Loaded( - val chatRoomList: List + val chatRoomList: List ): ChatRoomListUIState data object Error: ChatRoomListUIState diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/ChatRoomMessagingUIState.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/ChatRoomMessagingUIState.kt similarity index 75% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/ChatRoomMessagingUIState.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/ChatRoomMessagingUIState.kt index cbbf066d..6ee53c4d 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/ChatRoomMessagingUIState.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/ChatRoomMessagingUIState.kt @@ -1,6 +1,6 @@ -package at.torch.compose.ui.view.state +package press.mantra.compose.ui.view.state -import at.torch.compose.database.model.intermdiate.LocalChatRoom +import press.mantra.compose.database.model.intermdiate.LocalChatRoom sealed interface ChatRoomMessagingUIState { data class Loaded( diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/CreateProfileUIState.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/CreateProfileUIState.kt similarity index 76% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/CreateProfileUIState.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/CreateProfileUIState.kt index afba94e9..f70e5f0f 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/CreateProfileUIState.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/CreateProfileUIState.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.state +package press.mantra.compose.ui.view.state abstract class CreateProfileUIState { data object Error: CreateProfileUIState() @@ -13,6 +13,6 @@ abstract class CreateProfileUIState { ) : CreateProfileUIState() data class ProfileReady( - val profile: at.torch.compose.database.model.Profile + val profile: press.mantra.compose.database.model.Profile ) : CreateProfileUIState() } \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/FeedListUIState.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/FeedListUIState.kt similarity index 53% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/FeedListUIState.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/FeedListUIState.kt index 13d0c279..e170eb25 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/FeedListUIState.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/FeedListUIState.kt @@ -1,8 +1,8 @@ -package at.torch.compose.ui.view.state +package press.mantra.compose.ui.view.state sealed interface FeedListUIState { data class Loaded( - val localNostrEvents: List + val localNostrEvents: List ): FeedListUIState data object Error: FeedListUIState diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/FollowersListUIState.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/FollowersListUIState.kt similarity index 61% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/FollowersListUIState.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/FollowersListUIState.kt index 0c56c37f..8190eecf 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/FollowersListUIState.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/FollowersListUIState.kt @@ -1,8 +1,8 @@ -package at.torch.compose.ui.view.state +package press.mantra.compose.ui.view.state sealed interface FollowersListUIState { data class Loaded( - val followers: List + val followers: List ): FollowersListUIState data object Error: FollowersListUIState diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/FollowingListUIState.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/FollowingListUIState.kt similarity index 61% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/FollowingListUIState.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/FollowingListUIState.kt index e3fd6c76..2918aa01 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/FollowingListUIState.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/FollowingListUIState.kt @@ -1,8 +1,8 @@ -package at.torch.compose.ui.view.state +package press.mantra.compose.ui.view.state sealed interface FollowingListUIState { data class Loaded( - val following: List + val following: List ): FollowingListUIState data object Error: FollowingListUIState diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/HomeScreenUIState.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/HomeScreenUIState.kt similarity index 53% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/HomeScreenUIState.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/HomeScreenUIState.kt index 52c0941c..8ef6d95b 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/HomeScreenUIState.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/HomeScreenUIState.kt @@ -1,9 +1,9 @@ -package at.torch.compose.ui.view.state +package press.mantra.compose.ui.view.state sealed interface HomeScreenUIState { data class Loaded( - val profileWithFollowing: at.torch.compose.database.model.intermdiate.LocalProfileWithFollowing + val profileWithFollowing: press.mantra.compose.database.model.intermdiate.LocalProfileWithFollowing ): HomeScreenUIState data object Error: HomeScreenUIState diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/KeyPackageManagementUIState.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/KeyPackageManagementUIState.kt similarity index 75% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/KeyPackageManagementUIState.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/KeyPackageManagementUIState.kt index 3a551b3a..7b30dbdb 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/KeyPackageManagementUIState.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/KeyPackageManagementUIState.kt @@ -1,6 +1,6 @@ -package at.torch.compose.ui.view.state +package press.mantra.compose.ui.view.state -import at.torch.compose.database.model.MarmotKeyPackageBundle +import press.mantra.compose.database.model.MarmotKeyPackageBundle sealed interface KeyPackageManagementUIState { data class Loaded( diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/MetadataEventDetailUIState.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/MetadataEventDetailUIState.kt similarity index 51% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/MetadataEventDetailUIState.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/MetadataEventDetailUIState.kt index 893d4527..e8f34f88 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/MetadataEventDetailUIState.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/MetadataEventDetailUIState.kt @@ -1,11 +1,11 @@ -package at.torch.compose.ui.view.state +package press.mantra.compose.ui.view.state sealed interface MetadataEventDetailUIState { data class Loaded( val isActiveUser: Boolean, - val followingActiveUserConnection: at.torch.compose.database.model.Connection?, - val followedByActiveUserConnection: at.torch.compose.database.model.Connection?, + val followingActiveUserConnection: press.mantra.compose.database.model.Connection?, + val followedByActiveUserConnection: press.mantra.compose.database.model.Connection?, ): MetadataEventDetailUIState data object Error: MetadataEventDetailUIState diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/NavigationUIState.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/NavigationUIState.kt similarity index 57% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/NavigationUIState.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/NavigationUIState.kt index af4e8f8f..ad632797 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/NavigationUIState.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/NavigationUIState.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.state +package press.mantra.compose.ui.view.state abstract class NavigationUIState { data object Error: NavigationUIState() @@ -11,28 +11,28 @@ abstract class NavigationUIState { data object Landing: NavigationUIState() data class UnsignedProfile( - val unsignedNostrEvent: at.torch.compose.database.model.UnsignedNostrEvent, + val unsignedNostrEvent: press.mantra.compose.database.model.UnsignedNostrEvent, ) : NavigationUIState() data class UnsyncedProfile( - val unsignedNostrEvent: at.torch.compose.database.model.UnsignedNostrEvent, + val unsignedNostrEvent: press.mantra.compose.database.model.UnsignedNostrEvent, ) : NavigationUIState() data class UnqueuedProfileSynchronization( - val unsignedNostrEvent: at.torch.compose.database.model.UnsignedNostrEvent, + val unsignedNostrEvent: press.mantra.compose.database.model.UnsignedNostrEvent, ) : NavigationUIState() data class UnindexedProfile( - val nostrEvent: at.torch.compose.database.model.NostrEvent, + val nostrEvent: press.mantra.compose.database.model.NostrEvent, ) : NavigationUIState() data class UnqueuedProfile( - val profile: at.torch.compose.database.model.Profile, + val profile: press.mantra.compose.database.model.Profile, ) : NavigationUIState() data class UnannouncedProfile( - val broadcastNostrEventRequest: at.torch.compose.database.model.BroadcastNostrEventRequest, + val broadcastNostrEventRequest: press.mantra.compose.database.model.BroadcastNostrEventRequest, ) : NavigationUIState() diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/NostrEventDetailUIState.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/NostrEventDetailUIState.kt similarity index 64% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/NostrEventDetailUIState.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/NostrEventDetailUIState.kt index 8728a72d..dc81b0d3 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/NostrEventDetailUIState.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/NostrEventDetailUIState.kt @@ -1,8 +1,8 @@ -package at.torch.compose.ui.view.state +package press.mantra.compose.ui.view.state sealed interface NostrEventDetailUIState { data class Loaded( - val localNostrEvent: at.torch.compose.database.model.intermdiate.LocalNostrEvent + val localNostrEvent: press.mantra.compose.database.model.intermdiate.LocalNostrEvent ): NostrEventDetailUIState data object Error: NostrEventDetailUIState diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/SearchMemberToAddToChatRoomUIState.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/SearchMemberToAddToChatRoomUIState.kt similarity index 68% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/SearchMemberToAddToChatRoomUIState.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/SearchMemberToAddToChatRoomUIState.kt index 321507e6..46b07d38 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/SearchMemberToAddToChatRoomUIState.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/SearchMemberToAddToChatRoomUIState.kt @@ -1,7 +1,7 @@ -package at.torch.compose.ui.view.state +package press.mantra.compose.ui.view.state -import at.torch.compose.database.model.Profile -import at.torch.compose.database.model.intermdiate.LocalChatRoom +import press.mantra.compose.database.model.Profile +import press.mantra.compose.database.model.intermdiate.LocalChatRoom sealed interface SearchMemberToAddToChatRoomUIState { data class Loaded( diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/SearchResultListUIState.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/SearchResultListUIState.kt similarity index 58% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/SearchResultListUIState.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/SearchResultListUIState.kt index e321a28f..84fe612e 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/SearchResultListUIState.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/SearchResultListUIState.kt @@ -1,8 +1,8 @@ -package at.torch.compose.ui.view.state +package press.mantra.compose.ui.view.state sealed interface SearchResultListUIState { data class Loaded( - val localNostrEvents: List + val localNostrEvents: List ): SearchResultListUIState data object Error: SearchResultListUIState diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/SearchUIState.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/SearchUIState.kt similarity index 58% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/SearchUIState.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/SearchUIState.kt index 04a32035..79361dbf 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/SearchUIState.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/SearchUIState.kt @@ -1,8 +1,8 @@ -package at.torch.compose.ui.view.state +package press.mantra.compose.ui.view.state sealed interface SearchUIState { data class Loaded( - val localNostrEvents: List + val localNostrEvents: List ): SearchUIState data object Error: SearchUIState diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/ShareProfileUIState.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/ShareProfileUIState.kt similarity index 62% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/ShareProfileUIState.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/ShareProfileUIState.kt index 22c55803..e9fd1003 100755 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/ShareProfileUIState.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/ShareProfileUIState.kt @@ -1,8 +1,8 @@ -package at.torch.compose.ui.view.state +package press.mantra.compose.ui.view.state sealed interface ShareProfileUIState { data class Loaded( - val localNostrEvent: at.torch.compose.database.model.intermdiate.LocalNostrEvent + val localNostrEvent: press.mantra.compose.database.model.intermdiate.LocalNostrEvent ): ShareProfileUIState data object Error: ShareProfileUIState diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/SignInToProfileUIState.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/SignInToProfileUIState.kt similarity index 90% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/SignInToProfileUIState.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/SignInToProfileUIState.kt index 7983fcee..3e6bbb74 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/SignInToProfileUIState.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/SignInToProfileUIState.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.state +package press.mantra.compose.ui.view.state import com.vitorpamplona.quartz.nip01Core.core.HexKey diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/SovereignWalletUIState.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/SovereignWalletUIState.kt similarity index 88% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/SovereignWalletUIState.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/SovereignWalletUIState.kt index 3bf5020f..f52aa751 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/SovereignWalletUIState.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/SovereignWalletUIState.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.state +package press.mantra.compose.ui.view.state sealed interface SovereignWalletUIState { data object Uninitialized: SovereignWalletUIState diff --git a/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/WriteNewNoteUIState.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/WriteNewNoteUIState.kt new file mode 100644 index 00000000..ab31cbdc --- /dev/null +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/WriteNewNoteUIState.kt @@ -0,0 +1,24 @@ +package press.mantra.compose.ui.view.state + +import com.vitorpamplona.quartz.nip01Core.core.HexKey + +abstract class WriteNewNoteUIState { + data object Loading: WriteNewNoteUIState() + + data object Error: WriteNewNoteUIState() + + data class InputPrompt( + val localProfile: press.mantra.compose.database.model.intermdiate.LocalProfileWithFollowing, + val inReplyToNostrEvent: press.mantra.compose.database.model.intermdiate.LocalNostrEvent? = null, + val quotedNostrEvent: press.mantra.compose.database.model.intermdiate.LocalNostrEvent? = null, + val replayToId: HexKey? = null, + ): WriteNewNoteUIState() + + data class ConfirmNote( + val localProfile: press.mantra.compose.database.model.intermdiate.LocalProfileWithFollowing, + val inReplyToNostrEvent: press.mantra.compose.database.model.intermdiate.LocalNostrEvent? = null, + val quotedNostrEvent: press.mantra.compose.database.model.intermdiate.LocalNostrEvent? = null, + val text: String, + ) : WriteNewNoteUIState() + +} \ No newline at end of file diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/form/ChatRoomCreationFormState.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/form/ChatRoomCreationFormState.kt similarity index 75% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/form/ChatRoomCreationFormState.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/form/ChatRoomCreationFormState.kt index f711955e..8dc0a3a9 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/form/ChatRoomCreationFormState.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/form/ChatRoomCreationFormState.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.state.form +package press.mantra.compose.ui.view.state.form data class ChatRoomCreationFormState( val nameField: TextFieldForm = TextFieldForm(), diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/form/CreateProfileFormState.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/form/CreateProfileFormState.kt similarity index 74% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/form/CreateProfileFormState.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/form/CreateProfileFormState.kt index be2d17ba..364e7888 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/form/CreateProfileFormState.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/form/CreateProfileFormState.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.state.form +package press.mantra.compose.ui.view.state.form data class CreateProfileFormState( val nameField: TextFieldForm = TextFieldForm(), diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/form/SignInToProfileFormState.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/form/SignInToProfileFormState.kt similarity index 65% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/form/SignInToProfileFormState.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/form/SignInToProfileFormState.kt index 83e1ef4a..42a1f041 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/form/SignInToProfileFormState.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/form/SignInToProfileFormState.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.state.form +package press.mantra.compose.ui.view.state.form data class SignInToProfileFormState( val textFieldForm: TextFieldForm = TextFieldForm(), diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/form/TextFieldForm.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/form/TextFieldForm.kt similarity index 86% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/form/TextFieldForm.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/form/TextFieldForm.kt index 056f8897..cdf45d6e 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/form/TextFieldForm.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/form/TextFieldForm.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.state.form +package press.mantra.compose.ui.view.state.form import androidx.compose.foundation.text.input.TextFieldState import androidx.compose.runtime.MutableState diff --git a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/form/WriteNewNoteFormState.kt b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/form/WriteNewNoteFormState.kt similarity index 65% rename from composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/form/WriteNewNoteFormState.kt rename to composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/form/WriteNewNoteFormState.kt index 62d76962..e082b419 100644 --- a/composeApp/src/commonMain/kotlin/at/torch/compose/ui/view/state/form/WriteNewNoteFormState.kt +++ b/composeApp/src/commonMain/kotlin/press/mantra/compose/ui/view/state/form/WriteNewNoteFormState.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.view.state.form +package press.mantra.compose.ui.view.state.form data class WriteNewNoteFormState( val textFieldForm: TextFieldForm = TextFieldForm(), diff --git a/composeApp/src/commonTest/kotlin/at/auxiliary/compose/ComposeAppCommonTest.kt b/composeApp/src/commonTest/kotlin/press/auxiliary/compose/ComposeAppCommonTest.kt similarity index 82% rename from composeApp/src/commonTest/kotlin/at/auxiliary/compose/ComposeAppCommonTest.kt rename to composeApp/src/commonTest/kotlin/press/auxiliary/compose/ComposeAppCommonTest.kt index b0a53f74..3e548c4a 100644 --- a/composeApp/src/commonTest/kotlin/at/auxiliary/compose/ComposeAppCommonTest.kt +++ b/composeApp/src/commonTest/kotlin/press/auxiliary/compose/ComposeAppCommonTest.kt @@ -1,4 +1,4 @@ -package at.auxiliary.compose +package press.auxiliary.compose import kotlin.test.Test import kotlin.test.assertEquals diff --git a/composeApp/src/iosMain/kotlin/at/torch/compose/PlatformContext.ios.kt b/composeApp/src/iosMain/kotlin/at/torch/compose/PlatformContext.ios.kt deleted file mode 100644 index 1dd7c12d..00000000 --- a/composeApp/src/iosMain/kotlin/at/torch/compose/PlatformContext.ios.kt +++ /dev/null @@ -1,3 +0,0 @@ -package at.torch.compose - -actual class PlatformContext \ No newline at end of file diff --git a/composeApp/src/iosMain/kotlin/at/torch/compose/AppVersion.ios.kt b/composeApp/src/iosMain/kotlin/press/mantra/compose/AppVersion.ios.kt similarity index 93% rename from composeApp/src/iosMain/kotlin/at/torch/compose/AppVersion.ios.kt rename to composeApp/src/iosMain/kotlin/press/mantra/compose/AppVersion.ios.kt index f33e7d24..febfa6b7 100644 --- a/composeApp/src/iosMain/kotlin/at/torch/compose/AppVersion.ios.kt +++ b/composeApp/src/iosMain/kotlin/press/mantra/compose/AppVersion.ios.kt @@ -1,4 +1,4 @@ -package at.torch.compose +package press.mantra.compose import platform.Foundation.NSBundle diff --git a/composeApp/src/iosMain/kotlin/at/torch/compose/MainViewController.kt b/composeApp/src/iosMain/kotlin/press/mantra/compose/MainViewController.kt similarity index 85% rename from composeApp/src/iosMain/kotlin/at/torch/compose/MainViewController.kt rename to composeApp/src/iosMain/kotlin/press/mantra/compose/MainViewController.kt index ffdd314d..61ce28c7 100644 --- a/composeApp/src/iosMain/kotlin/at/torch/compose/MainViewController.kt +++ b/composeApp/src/iosMain/kotlin/press/mantra/compose/MainViewController.kt @@ -1,4 +1,4 @@ -package at.torch.compose +package press.mantra.compose import androidx.compose.ui.window.ComposeUIViewController import androidx.navigation.compose.rememberNavController @@ -7,9 +7,9 @@ import fr.acinq.phoenix.PhoenixGlobal fun MainViewController() = ComposeUIViewController { val navController = rememberNavController() - TorchApp( + MantraApp( navController = navController, - torchGlobal = TorchGlobal( + mantraGlobal = MantraGlobal( platformContext = PlatformContext() ), phoenixGlobal = PhoenixGlobal( diff --git a/composeApp/src/iosMain/kotlin/at/torch/compose/Platform.ios.kt b/composeApp/src/iosMain/kotlin/press/mantra/compose/Platform.ios.kt similarity index 72% rename from composeApp/src/iosMain/kotlin/at/torch/compose/Platform.ios.kt rename to composeApp/src/iosMain/kotlin/press/mantra/compose/Platform.ios.kt index 8ef251b0..cfaf67f8 100644 --- a/composeApp/src/iosMain/kotlin/at/torch/compose/Platform.ios.kt +++ b/composeApp/src/iosMain/kotlin/press/mantra/compose/Platform.ios.kt @@ -1,4 +1,4 @@ -package at.torch.compose +package press.mantra.compose import platform.UIKit.UIDevice import kotlin.native.Platform diff --git a/composeApp/src/iosMain/kotlin/press/mantra/compose/PlatformContext.ios.kt b/composeApp/src/iosMain/kotlin/press/mantra/compose/PlatformContext.ios.kt new file mode 100644 index 00000000..03bdcd35 --- /dev/null +++ b/composeApp/src/iosMain/kotlin/press/mantra/compose/PlatformContext.ios.kt @@ -0,0 +1,3 @@ +package press.mantra.compose + +actual class PlatformContext \ No newline at end of file diff --git a/composeApp/src/iosMain/kotlin/at/torch/compose/database/builder/PlatformDatabaseBuilder.ios.kt b/composeApp/src/iosMain/kotlin/press/mantra/compose/database/builder/PlatformDatabaseBuilder.ios.kt similarity index 88% rename from composeApp/src/iosMain/kotlin/at/torch/compose/database/builder/PlatformDatabaseBuilder.ios.kt rename to composeApp/src/iosMain/kotlin/press/mantra/compose/database/builder/PlatformDatabaseBuilder.ios.kt index feb1fa12..b2d1ea73 100644 --- a/composeApp/src/iosMain/kotlin/at/torch/compose/database/builder/PlatformDatabaseBuilder.ios.kt +++ b/composeApp/src/iosMain/kotlin/press/mantra/compose/database/builder/PlatformDatabaseBuilder.ios.kt @@ -1,9 +1,9 @@ -package at.torch.compose.database.builder +package press.mantra.compose.database.builder import androidx.room3.Room import androidx.room3.RoomDatabase -import at.torch.compose.PlatformContext -import at.torch.compose.database.TorchDatabase +import press.mantra.compose.PlatformContext +import press.mantra.compose.database.TorchDatabase import kotlinx.cinterop.ExperimentalForeignApi import platform.Foundation.NSDocumentDirectory import platform.Foundation.NSFileManager diff --git a/composeApp/src/iosMain/kotlin/at/torch/compose/extensions/Phoenix.ios.kt b/composeApp/src/iosMain/kotlin/press/mantra/compose/extensions/Phoenix.ios.kt similarity index 96% rename from composeApp/src/iosMain/kotlin/at/torch/compose/extensions/Phoenix.ios.kt rename to composeApp/src/iosMain/kotlin/press/mantra/compose/extensions/Phoenix.ios.kt index 19e09497..2b06433b 100644 --- a/composeApp/src/iosMain/kotlin/at/torch/compose/extensions/Phoenix.ios.kt +++ b/composeApp/src/iosMain/kotlin/press/mantra/compose/extensions/Phoenix.ios.kt @@ -1,4 +1,4 @@ -package at.torch.compose.extensions +package press.mantra.compose.extensions import co.touchlab.kermit.Logger import fr.acinq.bitcoin.Chain diff --git a/composeApp/src/iosMain/kotlin/at/torch/compose/ui/theme/Theme.ios.kt b/composeApp/src/iosMain/kotlin/press/mantra/compose/ui/theme/Theme.ios.kt similarity index 89% rename from composeApp/src/iosMain/kotlin/at/torch/compose/ui/theme/Theme.ios.kt rename to composeApp/src/iosMain/kotlin/press/mantra/compose/ui/theme/Theme.ios.kt index 94f6f69d..1760ce45 100644 --- a/composeApp/src/iosMain/kotlin/at/torch/compose/ui/theme/Theme.ios.kt +++ b/composeApp/src/iosMain/kotlin/press/mantra/compose/ui/theme/Theme.ios.kt @@ -1,4 +1,4 @@ -package at.torch.compose.ui.theme +package press.mantra.compose.ui.theme import androidx.compose.material3.ColorScheme import androidx.compose.runtime.Composable diff --git a/composeApp/src/iosMain/kotlin/at/torch/compose/ui/view/model/NavigationViewModel.ios.kt b/composeApp/src/iosMain/kotlin/press/mantra/compose/ui/view/model/NavigationViewModel.ios.kt similarity index 98% rename from composeApp/src/iosMain/kotlin/at/torch/compose/ui/view/model/NavigationViewModel.ios.kt rename to composeApp/src/iosMain/kotlin/press/mantra/compose/ui/view/model/NavigationViewModel.ios.kt index 91d03cf2..6399e2ea 100644 --- a/composeApp/src/iosMain/kotlin/at/torch/compose/ui/view/model/NavigationViewModel.ios.kt +++ b/composeApp/src/iosMain/kotlin/press/mantra/compose/ui/view/model/NavigationViewModel.ios.kt @@ -1,6 +1,6 @@ -package at.torch.compose.ui.view.model +package press.mantra.compose.ui.view.model -import at.torch.compose.AppVersion +import press.mantra.compose.AppVersion import co.touchlab.kermit.Logger import fr.acinq.bitcoin.Chain import fr.acinq.bitcoin.MnemonicCode diff --git a/settings.gradle.kts b/settings.gradle.kts index ed402d6b..6e6e3daf 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,4 +1,4 @@ -rootProject.name = "Torch" +rootProject.name = "Mantra" enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") pluginManagement {