feat(inbox): Implement unified inbox with sign request notifications#518
Open
yasin-ce wants to merge 20 commits intomultisig/07-creation-flowfrom
Open
feat(inbox): Implement unified inbox with sign request notifications#518yasin-ce wants to merge 20 commits intomultisig/07-creation-flowfrom
yasin-ce wants to merge 20 commits intomultisig/07-creation-flowfrom
Conversation
5b34bb9 to
9fa3c15
Compare
2f7bc2a to
c1aa803
Compare
9fa3c15 to
91daf6f
Compare
c1aa803 to
c003291
Compare
- Fix duplicate DI bindings for joint account repository - Add missing interface implementations - Update transaction signer handling for joint accounts - Fix import statements and code organization
- Add CreateJointAccountFragment and ViewModel - Add NameJointAccountFragment for account naming - Add AddJointAccountFragment for participant selection - Implement JointAccountTransactionSignHelper - Add CreateJointAccountUseCase - Add participant selection UI components - Handle contact creation for external addresses
- Add AllAccountsInboxFragment with unified inbox view - Add sign request notification items to inbox - Implement JointAccountInvitationDetailFragment - Add inbox preview mappers for different notification types - Handle inbox item click navigation - Add badge indicators for pending requests
91daf6f to
ab2aecc
Compare
c003291 to
ec9a896
Compare
- Fix merge conflicts in Arc59SendSummaryFragment and GetAccountOriginalStateIconDrawablePreviewUseCase - Update domain models to use DTO suffix as per architecture guidelines - Remove duplicate initSavedStateListener calls - Keep proper Joint account type handling
- InboxMessagesDTO -> InboxMessages - JointAccountDTO -> JointAccount - JointSignRequestDTO -> JointSignRequest
mitsinsar
reviewed
Jan 26, 2026
...src/main/kotlin/com/algorand/android/modules/accounts/ui/viewmodel/AccountsPreviewUseCase.kt
Outdated
Show resolved
Hide resolved
app/src/main/kotlin/com/algorand/android/modules/inbox/allaccounts/di/InboxRepositoryModule.kt
Outdated
Show resolved
Hide resolved
...c/main/kotlin/com/algorand/android/modules/inbox/allaccounts/ui/mapper/InboxPreviewMapper.kt
Show resolved
Hide resolved
...in/kotlin/com/algorand/android/modules/inbox/allaccounts/ui/mapper/InboxPreviewMapperImpl.kt
Show resolved
Hide resolved
...lgorand/android/modules/inbox/allaccounts/ui/mapper/JointAccountInvitationInboxItemMapper.kt
Outdated
Show resolved
Hide resolved
.../main/kotlin/com/algorand/android/modules/inbox/data/local/InboxLastOpenedTimeLocalSource.kt
Outdated
Show resolved
Hide resolved
app/src/main/kotlin/com/algorand/android/modules/inbox/allaccounts/ui/InboxFragment.kt
Outdated
Show resolved
Hide resolved
app/src/main/kotlin/com/algorand/android/modules/inbox/allaccounts/ui/InboxFragment.kt
Outdated
Show resolved
Hide resolved
app/src/main/kotlin/com/algorand/android/modules/inbox/allaccounts/ui/InboxFragment.kt
Outdated
Show resolved
Hide resolved
app/src/main/kotlin/com/algorand/android/modules/inbox/allaccounts/ui/InboxFragment.kt
Outdated
Show resolved
Hide resolved
* multisig/07-creation-flow: fix: Remove @nAmed annotation referencing removed INJECTION_NAME
- Remove unnecessary @singleton from InboxRepositoryModule - Use JointAccountValidationException.MIN_PARTICIPANTS constant instead of hardcoded value in JointAccountInvitationInboxItemMapper - Refactor InboxLastOpenedTimeLocalSource to use PersistentCache
…uestInboxItemMapper - Replace ZonedDateTime.now() calls with TimeProvider for testability - Use RelativeTimeDifference utility for calculating relative time strings - Add time formatting string resources for short time display
…oxScreenListener - Fragment now implements InboxScreenListener directly - Move isJointAccountImportHandled flag to ViewModel for state persistence - Add jointAccountInvitationToOpen and jointAccountAddressToOpen events - Remove unnecessary comments
…iewModel - Create JointAccountInvitationDetailViewModel for account display names and icons - Create JointAccountInvitationDetailViewState to hold view state - Refactor Fragment to use ViewModel instead of LaunchedEffect - Remove @nAmed annotation for InboxApiRepository injection
- Use InboxScreen overload that accepts StateFlow instead of ViewModel - Remove unnecessary mock ViewModel construction and reflection - Significantly reduce preview code complexity
…rovider - Add DI provider for InboxLastOpenedTimeLocalSource in InboxRepositoryModule - Remove @Inject from InboxLastOpenedTimeLocalSource constructor - Delete duplicate unused class in sharedpref package
- Create InboxViewState sealed interface (Loading, Empty, Content, Error) - Create InboxViewEvent sealed interface for navigation events - Update InboxViewModel to use StateDelegate and EventDelegate - Add InboxViewStateMapper for creating view states - Update InboxFragment to observe viewEvent for navigation - Update InboxScreen to use InboxViewState - Keep backward compatible InboxPreview overload for previews
- Use sealed interface ViewState pattern for JointAccountInvitationDetail - Use TimeProvider instead of ZonedDateTime.now() in mappers - Optimize AccountsPreviewUseCase to use getJointAccountInboxCountFlow() - Add SQLite JDBC force resolution in build.gradle.kts - Update .cursorrules with PR review feedback patterns Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Use sealed interface ViewState pattern for JointAccountInvitationDetail - Use TimeProvider instead of ZonedDateTime.now() in mappers - Optimize AccountsPreviewUseCase to use getJointAccountInboxCountFlow() - Add SQLite JDBC force resolution in build.gradle.kts - Update .cursorrules with PR review feedback patterns Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…android into multisig/08-inbox-pages * 'multisig/08-inbox-pages' of github.com:perawallet/pera-android: fix: Address PR review feedback and add coding rules
yasin-ce
added a commit
that referenced
this pull request
Jan 27, 2026
* multisig/08-inbox-pages: fix: Address PR review feedback and add coding rules refactor: Implement ViewState/ViewEvent pattern for Inbox refactor: Fix InboxLastOpenedTimeLocalSource DI with PersistentCacheProvider refactor: Simplify InboxScreenPreview by using StateFlow overload refactor: Move account display logic to JointAccountInvitationDetailViewModel refactor: Move deep link handling flag to ViewModel and implement InboxScreenListener refactor: Use TimeProvider and RelativeTimeDifference in SignatureRequestInboxItemMapper fix: Address PR #518 review comments fix: Remove @nAmed annotation referencing removed INJECTION_NAME # Conflicts: # app/src/main/kotlin/com/algorand/android/modules/inbox/allaccounts/ui/mapper/SignatureRequestInboxItemMapper.kt
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
InboxFragmentwith unified inbox view (Compose)InboxViewModelandInboxPreviewUseCaseSignatureRequestInboxItemfor pending sign requestsJointAccountInvitationInboxItemfor invitationsJointAccountInvitationDetailFragmentand screenInboxLastOpenedTimeLocalSourcefor unread trackingTest Plan