Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
76 commits
Select commit Hold shift + click to select a range
79fe5b5
feat: error and loading state for non pro
Oct 28, 2025
1d2027c
feat: bottom sheet container in SwiftUI
Oct 28, 2025
1237456
clean up and refactor
Oct 29, 2025
0712148
fix: incorrectly now showing the pro cta modal
Oct 29, 2025
6173bfd
WIP: Session Pro bottom sheet
Oct 30, 2025
c17ab47
fix: bottom sheet height
Oct 31, 2025
1a1af59
wip: bottom sheet navigation
Oct 31, 2025
69125c7
wip: swiftui navigatable state
Nov 3, 2025
e19c808
Merge branch 'session-pro-settings' into session-pro-settings-non-pro
Nov 4, 2025
9e85a7c
fix ui issues in bottom sheet
Nov 5, 2025
c804e63
fix: Bottom sheet UI
Nov 5, 2025
5c4f091
Merge branch 'session-pro-settings' into session-pro-settings-non-pro
Nov 6, 2025
4400327
UI fix on bottom sheet
Nov 6, 2025
407be95
fix: cancel pro function
Nov 6, 2025
18ee843
fix: cancel pro function
Nov 6, 2025
705b653
Merge branch 'session-pro-settings' into session-pro-settings-non-pro
Nov 6, 2025
7a52e76
feat: bottom sheet with dynamic height
Nov 7, 2025
173e772
fix: Session List Screen paddings and scrollable state
Nov 10, 2025
fff3cb6
fix: glow background in session pro updated bottom sheet
Nov 10, 2025
9cf0ef8
feat: no billing access screen
Nov 10, 2025
bffd313
feat: confirmation modal in bottom sheet
Nov 10, 2025
79d9194
clean up
Nov 10, 2025
3d1eaf2
wip: input view action for pro bottom sheet
Nov 10, 2025
e73b8bc
Merge branch 'session-pro-settings' into session-pro-settings-non-pro
Nov 12, 2025
9e615c8
Merge branch 'session-pro-settings' into session-pro-settings-non-pro
Nov 12, 2025
c531bb4
Merge branch 'session-pro-settings' into session-pro-settings-non-pro
Nov 12, 2025
539f132
fix: modal and bottom sheet animation
Nov 12, 2025
47ca3ef
feat: pending state for purchasing pro
Nov 13, 2025
faca8e4
Merge branch 'feature/update-crowdin-translations' of https://github.…
Nov 13, 2025
0920961
fix: session pro heading in RTL shouldn't be flipped
Nov 13, 2025
a55f348
fix: Session Pro State logic
Nov 13, 2025
dd598d9
feat: payment failure modal and string upadte
Nov 13, 2025
d221472
fix: string color in purchase pro screen
Nov 13, 2025
3d60897
clean up
Nov 13, 2025
a8db9c1
refactor pro related function to be async
Nov 14, 2025
5d0df3e
add TODOs
Nov 14, 2025
459f6cb
Merge branch 'session-pro-settings' into session-pro-settings-non-pro
Nov 18, 2025
5f01900
fix UI issues after merge
Nov 19, 2025
6a337ec
Merge branch 'session-pro-settings' into session-pro-settings-non-pro
Nov 19, 2025
a925cab
fix: padding for session logo with glowing background
Nov 19, 2025
c5be1c5
Merge branch 'session-pro-settings' into session-pro-settings-non-pro
Nov 24, 2025
6ace412
Merge branch 'dev' into session-pro-settings-non-pro
Nov 24, 2025
6329ff4
update image resource for pro CTAs
Nov 24, 2025
f268a61
fix: bottom sheet content background color
Nov 24, 2025
a644616
clean up
Nov 24, 2025
ac11a0d
fix background issue and add drag interaction for bottom sheet
Nov 24, 2025
2515945
fix iOS 26 style
Nov 25, 2025
797d8f7
manually add height for bottom sheet content
Nov 25, 2025
6849c10
Merge branch 'session-pro-settings' into session-pro-settings-non-pro
Nov 25, 2025
3b039d0
fix a crash
Nov 25, 2025
a76a53b
minor refactor to avoid confusion
Nov 26, 2025
423601c
minor fix
Nov 26, 2025
07650f4
refactor to reduce duplicated code on pro settings view model
Nov 27, 2025
4a4cdee
Merge branch 'session-pro-settings' into session-pro-settings-non-pro
Nov 27, 2025
85b2fd5
fix unit test
Nov 27, 2025
f9fd653
Merge branch 'session-pro-settings' into session-pro-settings-non-pro
mpretty-cyro Nov 30, 2025
907e1a9
fix a couple of issues
Dec 2, 2025
4b85138
fix pro feature content
Dec 2, 2025
45a5b3a
fix: settings screen session pro title color
Dec 2, 2025
ed174d9
fix: recover access in pro settings screen for non pro user
Dec 2, 2025
f15831d
fix: animated profile picture in expired/expiring CTA
Dec 2, 2025
d7aed21
fix issues in Pro CTA
Dec 2, 2025
a2b15c0
fix: drop shadow for pro plans
Dec 3, 2025
df3994a
fix: pro settings cell height
Dec 3, 2025
cf43ca9
fix error modal content for renew pro access
Dec 3, 2025
cd07c2d
fix: bottom sheet not shown in couple of CTAs
Dec 3, 2025
0c42bf3
fix: no billing access screen
Dec 3, 2025
64c5805
fix: bottom sheet won't open loading/error modals
Dec 3, 2025
41a360b
wip: renew CTA
Dec 3, 2025
db4414b
feat: renew CTAs
Dec 3, 2025
3596cd3
fix: bottom sheet for renewing pro access
Dec 3, 2025
e3fb412
Merge branch 'session-pro-settings' into session-pro-settings-non-pro
Dec 4, 2025
a58ea42
fix a string in no billing access screen
Dec 4, 2025
4be9846
fix qa issues
Dec 8, 2025
17afd91
feat: open pro roadmap when tapping on description for no billing acc…
Dec 9, 2025
2d3f5e3
Merge branch 'session-pro-settings' into session-pro-settings-non-pro
Dec 9, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
146 changes: 79 additions & 67 deletions Session.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

42 changes: 31 additions & 11 deletions Session/Conversations/ConversationVC+Interaction.swift
Original file line number Diff line number Diff line change
Expand Up @@ -562,9 +562,16 @@ extension ConversationVC:

@MainActor func handleCharacterLimitLabelTapped() {
guard !viewModel.dependencies[singleton: .sessionProState].showSessionProCTAIfNeeded(
.longerMessages,
onConfirm: { [weak self] in
self?.snInputView.updateNumberOfCharactersLeft(self?.snInputView.text ?? "")
.longerMessages(renew: viewModel.dependencies[singleton: .sessionProState].isSessionProExpired),
onConfirm: { [weak self, dependencies = viewModel.dependencies] in
dependencies[singleton: .sessionProState].showSessionProBottomSheetIfNeeded(
afterClosed: { [weak self] in
self?.snInputView.updateNumberOfCharactersLeft(self?.snInputView.text ?? "")
},
presenting: { bottomSheet in
self?.present(bottomSheet, animated: true)
}
)
},
onCancel: { [weak self] in
self?.snInputView.updateNumberOfCharactersLeft(self?.snInputView.text ?? "")
Expand Down Expand Up @@ -700,9 +707,16 @@ extension ConversationVC:

@MainActor func showModalForMessagesExceedingCharacterLimit(_ isSessionPro: Bool) {
guard !viewModel.dependencies[singleton: .sessionProState].showSessionProCTAIfNeeded(
.longerMessages,
onConfirm: { [weak self] in
self?.snInputView.updateNumberOfCharactersLeft(self?.snInputView.text ?? "")
.longerMessages(renew: viewModel.dependencies[singleton: .sessionProState].isSessionProExpired),
onConfirm: { [weak self, dependencies = viewModel.dependencies] in
dependencies[singleton: .sessionProState].showSessionProBottomSheetIfNeeded(
afterClosed: { [weak self] in
self?.snInputView.updateNumberOfCharactersLeft(self?.snInputView.text ?? "")
},
presenting: { bottomSheet in
self?.present(bottomSheet, animated: true)
}
)
},
onCancel: { [weak self] in
self?.snInputView.updateNumberOfCharactersLeft(self?.snInputView.text ?? "")
Expand Down Expand Up @@ -1669,16 +1683,22 @@ extension ConversationVC:
},
onProBadgeTapped: { [weak self, dependencies] in
dependencies[singleton: .sessionProState].showSessionProCTAIfNeeded(
.generic,
.generic(renew: dependencies[singleton: .sessionProState].isSessionProExpired),
dismissType: .single,
beforePresented: {},
onConfirm: { [weak self] in
self?.snInputView.updateNumberOfCharactersLeft(self?.snInputView.text ?? "")
onConfirm: {
dependencies[singleton: .sessionProState].showSessionProBottomSheetIfNeeded(
afterClosed: { [weak self] in
self?.snInputView.updateNumberOfCharactersLeft(self?.snInputView.text ?? "")
},
presenting: { bottomSheet in
dependencies[singleton: .appContext].frontMostViewController?.present(bottomSheet, animated: true)
}
)
},
onCancel: { [weak self] in
self?.snInputView.updateNumberOfCharactersLeft(self?.snInputView.text ?? "")
},
afterClosed: {},
afterClosed: nil,
presenting: { modal in
dependencies[singleton: .appContext].frontMostViewController?.present(modal, animated: true)
}
Expand Down
2 changes: 1 addition & 1 deletion Session/Conversations/ConversationVC.swift
Original file line number Diff line number Diff line change
Expand Up @@ -352,7 +352,7 @@ final class ConversationVC: BaseVC, LibSessionRespondingViewController, Conversa
),
imageDataManager: self.viewModel.dependencies[singleton: .imageDataManager],
linkPreviewManager: self.viewModel.dependencies[singleton: .linkPreviewManager],
sessionProState: self.viewModel.dependencies[singleton: .sessionProState],
sessionProStatePublisher: self.viewModel.dependencies[singleton: .sessionProState].isSessionProActivePublisher,
didLoadLinkPreview: nil
)

Expand Down
Loading