Skip to content

feat(inbox): Implement unified inbox with sign request notifications#518

Open
yasin-ce wants to merge 20 commits intomultisig/07-creation-flowfrom
multisig/08-inbox-pages
Open

feat(inbox): Implement unified inbox with sign request notifications#518
yasin-ce wants to merge 20 commits intomultisig/07-creation-flowfrom
multisig/08-inbox-pages

Conversation

@yasin-ce
Copy link
Collaborator

Summary

  • Add InboxFragment with unified inbox view (Compose)
  • Add InboxViewModel and InboxPreviewUseCase
  • Add SignatureRequestInboxItem for pending sign requests
  • Add JointAccountInvitationInboxItem for invitations
  • Add JointAccountInvitationDetailFragment and screen
  • Add inbox preview mappers for different notification types
  • Add InboxLastOpenedTimeLocalSource for unread tracking

Test Plan

  • Verify inbox shows asset inbox items
  • Verify inbox shows joint account sign requests
  • Verify inbox shows joint account invitations
  • Verify unread badge indicator works
  • Test navigation from inbox item to detail screen

@yasin-ce yasin-ce self-assigned this Jan 20, 2026
@yasin-ce yasin-ce force-pushed the multisig/07-creation-flow branch from 5b34bb9 to 9fa3c15 Compare January 20, 2026 09:32
@yasin-ce yasin-ce force-pushed the multisig/08-inbox-pages branch from 2f7bc2a to c1aa803 Compare January 20, 2026 09:33
@yasin-ce yasin-ce force-pushed the multisig/07-creation-flow branch from 9fa3c15 to 91daf6f Compare January 20, 2026 09:49
@yasin-ce yasin-ce force-pushed the multisig/08-inbox-pages branch from c1aa803 to c003291 Compare January 20, 2026 09:50
- 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
@yasin-ce yasin-ce force-pushed the multisig/07-creation-flow branch from 91daf6f to ab2aecc Compare January 20, 2026 13:49
@yasin-ce yasin-ce force-pushed the multisig/08-inbox-pages branch from c003291 to ec9a896 Compare January 20, 2026 13:49
- 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
yasin-ce and others added 12 commits January 26, 2026 20:23
* multisig/07-creation-flow:
  fix: Remove unused companion object from InboxLastOpenedTimeLocalSource
  fix: Address remaining PR #516 review comments
  fix: Address PR #516 review comments
  fix: Address PR #515 review comments
  fix: Remove redundant methods and use injected use cases
* 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
@mitsinsar mitsinsar mentioned this pull request Jan 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants