Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
313 commits
Select commit Hold shift + click to select a range
2246679
Merge pull request #1762 from session-foundation/feature/update-crowd…
ThomasSession Dec 8, 2025
8fc85d3
Proper path status colours - now using red for no path or errors and …
ThomasSession Dec 8, 2025
25c3ab1
Bump com.squareup.okhttp3:okhttp from 5.3.0 to 5.3.2 (#1765)
dependabot[bot] Dec 8, 2025
909035d
Bump billingVersion from 8.0.0 to 8.1.0 (#1764)
dependabot[bot] Dec 8, 2025
dd8b8e1
Showing the path view in compose instead of an xml view
ThomasSession Dec 8, 2025
ba209b2
SES-4753 - Manage Admins and Members (Invite member, Admin promotion)…
jbsession Dec 9, 2025
2b0545d
Merge branch 'dev' into feature/msg-send-receive-tests
ThomasSession Dec 9, 2025
0878097
Accidental comment
ThomasSession Dec 9, 2025
5445f14
SES-4728 - making sure we can debug quick refund window
ThomasSession Dec 9, 2025
c6d47dd
Merge pull request #1766 from session-foundation/feature/msg-send-rec…
ThomasSession Dec 9, 2025
9cfed5b
Merge branch 'dev' into fix/SES-4728-quick-refund-debug
ThomasSession Dec 9, 2025
d4e3cd0
Merge pull request #1767 from session-foundation/fix/SES-4728-quick-r…
ThomasSession Dec 9, 2025
b76ee45
Update pro integration (#1769)
SessionHero01 Dec 9, 2025
28d4eca
Bump com.vanniktech:android-image-cropper from 4.6.0 to 4.7.0 (#1742)
dependabot[bot] Dec 9, 2025
1f8cb28
Fix freezeFrame not respected (#1770)
SessionHero01 Dec 9, 2025
6d3c095
SES-4105 : Admin seeing "delete group" incorrectly in multi-admin gro…
jbsession Dec 10, 2025
ab8b223
Refactor message formatting (#1771)
SessionHero01 Dec 11, 2025
b63fdd6
Remove deprecated message receiving code (#1772)
SessionHero01 Dec 11, 2025
de0494d
WIP
ThomasSession Dec 11, 2025
2cd727b
wip
ThomasSession Dec 12, 2025
3b6a66e
Error cleanup
ThomasSession Dec 12, 2025
9cbfbf5
Remove the need for stateflow for conversation list (#1776)
SessionHero01 Dec 15, 2025
4ad98ae
Adding back snodeClock
ThomasSession Dec 15, 2025
635642f
Old snodeclock
ThomasSession Dec 15, 2025
31a0c96
[Automated] Update translations from Crowdin
mpretty-cyro Dec 15, 2025
ce89777
bootstrap logic in snodedirectory
ThomasSession Dec 15, 2025
e289b08
Separate population of the snode pool
ThomasSession Dec 15, 2025
07e2e5b
MAke sure we populate the snode pool on app startup
ThomasSession Dec 15, 2025
abba38c
Making sure we populate the snode pool when building the path(s)
ThomasSession Dec 15, 2025
1c36a33
SessionClient first step
ThomasSession Dec 15, 2025
6e0d2d2
Adding more from old SnodeAPI
ThomasSession Dec 15, 2025
b0dba90
tweaks
ThomasSession Dec 15, 2025
02f5d8f
Merge pull request #1775 from session-foundation/feature/update-crowd…
ThomasSession Dec 15, 2025
4d7aa6d
Fix missing attachment placeholder (#1777)
SessionHero01 Dec 15, 2025
a1fa3b6
Bump actions/upload-artifact from 5 to 6 (#1779)
dependabot[bot] Dec 15, 2025
c4b0590
Bump actions/cache from 4 to 5 (#1780)
dependabot[bot] Dec 15, 2025
1a4a122
SES-4977 : Don't show link preview acceptance dialog when a user is t…
jbsession Dec 16, 2025
57b0495
todo
ThomasSession Dec 16, 2025
2916e49
Optimize config accessor (#1785)
SessionHero01 Dec 16, 2025
38255eb
Delegating to the new OnionErrorManager
ThomasSession Dec 16, 2025
e7bac14
small tweaks
ThomasSession Dec 16, 2025
5b06f7b
fixes
ThomasSession Dec 16, 2025
c86c9ca
Bump uiTestJunit4Version from 1.9.4 to 1.10.0 (#1781)
dependabot[bot] Dec 16, 2025
25a6e9b
Bump org.mockito:mockito-core from 5.20.0 to 5.21.0 (#1782)
dependabot[bot] Dec 16, 2025
8681f6d
invoke overlaods
ThomasSession Dec 16, 2025
e030cd3
Bump androidx.navigation:navigation-compose from 2.9.5 to 2.9.6 (#1783)
dependabot[bot] Dec 16, 2025
832076f
better deserialization
ThomasSession Dec 16, 2025
1a07cd0
Update libsession-util and AGP (#1790)
SessionHero01 Dec 17, 2025
2d5d53b
Fix deadlock (#1789)
SessionHero01 Dec 17, 2025
8c69fa1
Fix message formatting (#1788)
SessionHero01 Dec 17, 2025
24b3452
Batching from old code
ThomasSession Dec 17, 2025
00a8c71
Missing methods
ThomasSession Dec 17, 2025
47d8808
cleaned path manager
ThomasSession Dec 17, 2025
a886beb
Removing access to SnodeAPI part1 - moved getSingleTargetSnode in swa…
ThomasSession Dec 17, 2025
1ffd850
SnodeAPI pt2
ThomasSession Dec 17, 2025
10f8d66
Merge branch 'dev' into feature/onion-request-refactor
ThomasSession Dec 17, 2025
01881f0
Cleanup of SnodeAPI pt3
ThomasSession Dec 17, 2025
13e61b6
Last part of the SnodeAPI switch
ThomasSession Dec 17, 2025
02b7159
interface implementations
ThomasSession Dec 17, 2025
c747da1
Changed wrong string in Promote member screen (#1791)
jbsession Dec 17, 2025
b7eb26d
Hilt inhjection
ThomasSession Dec 17, 2025
f99c9d0
Removing Result in favor of a direct OnionResponse
ThomasSession Dec 18, 2025
d9ff024
Removing OnionRequestAPI usage
ThomasSession Dec 18, 2025
efddee8
Fixing hilt dependencies
ThomasSession Dec 18, 2025
a697d2e
Using V3 where needed
ThomasSession Dec 18, 2025
9d29735
Better separation of concerns. No one calls SessionDirectly except th…
ThomasSession Dec 22, 2025
af412fe
Merge remote-tracking branch 'origin/dev' into release/1.30.2
SessionHero01 Jan 4, 2026
79cdb95
Merge pull request #1803 from session-foundation/release/1.30.2
SessionHero01 Jan 4, 2026
500fd65
[Automated] Update translations from Crowdin
mpretty-cyro Jan 5, 2026
5aee113
Merge pull request #1786 from session-foundation/feature/update-crowd…
ThomasSession Jan 5, 2026
3c050f0
Better handling of shared data
ThomasSession Jan 5, 2026
8b1ab17
Merge pull request #1807 from session-foundation/fix/shared-intents
ThomasSession Jan 5, 2026
d08990d
Merge branch 'dev' into feature/onion-request-refactor
ThomasSession Jan 6, 2026
593aa49
Adding snode to errors when possible. Removed loud logs
ThomasSession Jan 6, 2026
4dfc05d
[Automated] Update translations from Crowdin (#1809)
stfsession Jan 6, 2026
1199826
[Automated] Update translations from Crowdin
mpretty-cyro Jan 6, 2026
b45702c
Keeping reference to previous errors during the retry logic
ThomasSession Jan 6, 2026
1b092e9
Snodeclock resync
ThomasSession Jan 6, 2026
79dc0ed
tightening the coroutines
ThomasSession Jan 6, 2026
ab116c1
Removing NotifyPNServerJob
ThomasSession Jan 6, 2026
2cc3b8b
Bump androidx.exifinterface:exifinterface from 1.4.1 to 1.4.2 (#1796)
dependabot[bot] Jan 6, 2026
e862da9
Bump cameraCamera2Version from 1.5.1 to 1.5.2 (#1795)
dependabot[bot] Jan 6, 2026
6892a75
Merge branch 'dev' into feature/update-crowdin-translations
ThomasSession Jan 6, 2026
c39242d
SES-5049 : Invite contacts - Missing qa-tags (#1812)
jbsession Jan 6, 2026
b9a0504
Reworking error management
ThomasSession Jan 6, 2026
4b20c09
Using Path
ThomasSession Jan 6, 2026
e98bb43
Fixes: Manage members and admins (#1811)
jbsession Jan 6, 2026
5923d70
Giving the Clients their own retry logic and error management
ThomasSession Jan 7, 2026
2be1ea8
Handle the bad snode in COS for Snode destination
ThomasSession Jan 7, 2026
9e920c8
Making sure mutating the Path is safe when done from different threads
ThomasSession Jan 7, 2026
d936b1f
Moving COS responsibility in the Clients
ThomasSession Jan 7, 2026
9019569
Merge branch 'dev' into feature/update-crowdin-translations
ThomasSession Jan 7, 2026
d2602b2
Merge pull request #1810 from session-foundation/feature/update-crowd…
ThomasSession Jan 7, 2026
010f10c
Retrying logic
ThomasSession Jan 7, 2026
069bdb3
Moving retry strategy at the calling sites
ThomasSession Jan 7, 2026
cd1f00a
Moving now private call to new function inclient
ThomasSession Jan 7, 2026
801552d
cleanup
ThomasSession Jan 7, 2026
1a9d435
Retry logic
ThomasSession Jan 7, 2026
847f2fb
updating tests
ThomasSession Jan 7, 2026
9f117f7
Merge branch 'dev' into feature/onion-request-refactor
ThomasSession Jan 7, 2026
7ec4aaa
Merge branch 'release/1.30.3' into merge-1.30.3-to-dev
ThomasSession Jan 7, 2026
08afc0d
Merge pull request #1818 from session-foundation/merge-1.30.3-to-dev
ThomasSession Jan 7, 2026
32af66d
Merge branch 'dev' into feature/onion-request-refactor
ThomasSession Jan 7, 2026
abda6b1
New clock logic - resync every 10min max - Do not retry if clock wasn…
ThomasSession Jan 7, 2026
6e0ff88
Merge pull request #1819 from session-foundation/fix-anr
SessionHero01 Jan 7, 2026
0408220
Using the right class in the poller+ better onion error logs
ThomasSession Jan 8, 2026
42f1f1f
Bump lifecycleVersion from 2.9.4 to 2.10.0 (#1816)
dependabot[bot] Jan 8, 2026
8e0fe94
TODOs and clean up
ThomasSession Jan 8, 2026
7ea6280
[Automated] Update translations from Crowdin
Aerilym Jan 8, 2026
8b294a4
Error update
ThomasSession Jan 8, 2026
fa97b8a
Adding mutex to protect the pool population
ThomasSession Jan 8, 2026
a4ee9ac
Adding destination to the OnionErrors
ThomasSession Jan 8, 2026
8c17c26
Merge pull request #1820 from session-foundation/feature/update-crowd…
ThomasSession Jan 8, 2026
c1a2a3b
SES-5055 : Modals with radials - Missing qa-tags (#1821)
jbsession Jan 8, 2026
6bfd7c6
Fixing network issues
ThomasSession Jan 8, 2026
c4dbec8
Better logging
ThomasSession Jan 8, 2026
4dc6600
More error management and todos
ThomasSession Jan 9, 2026
327f012
More todos
ThomasSession Jan 9, 2026
ab14e25
todo
ThomasSession Jan 9, 2026
10fd561
Real path manager logic, with strikes for paths and snodes
ThomasSession Jan 9, 2026
9c1e228
forceremove for handleBadSnode
ThomasSession Jan 9, 2026
2383373
Using inject for the clock
ThomasSession Jan 11, 2026
4820850
SES-5053 : Invite via Account ID is not received (#1823)
jbsession Jan 11, 2026
a466f3e
Better handling of COS
ThomasSession Jan 12, 2026
56adfc3
[Automated] Update translations from Crowdin
Aerilym Jan 12, 2026
8c16e4e
Only resync the clock after a COS - moving to a "do not penalise path…
ThomasSession Jan 12, 2026
2a637af
Renamed method
ThomasSession Jan 12, 2026
36fad72
Tweaking error management logic
ThomasSession Jan 12, 2026
4291825
InvalidResponse no longer warrants custom behaviour
ThomasSession Jan 12, 2026
71af408
fixing up app startup component
ThomasSession Jan 12, 2026
625c31a
Removing Kovenant!!
ThomasSession Jan 12, 2026
86b6472
missing snode pool refresh logic
ThomasSession Jan 13, 2026
48efef5
Networking rules updated
ThomasSession Jan 13, 2026
a2112ac
Made the destination 502 a forceRemove
ThomasSession Jan 13, 2026
051f204
Merge pull request #1822 from session-foundation/feature/update-crowd…
ThomasSession Jan 14, 2026
f394159
Clean up push registration retry logic (#1826)
SessionHero01 Jan 14, 2026
9b2c29d
Merge branch 'dev' into feature/onion-request-refactor
ThomasSession Jan 14, 2026
ecd8198
SES-5105 - Make sure the debug loading state is also used for pro stats
ThomasSession Jan 14, 2026
8ccab4a
Undoing test setup
ThomasSession Jan 14, 2026
d10e807
refetch community caps after 400 error (#1828)
SessionHero01 Jan 14, 2026
2ac7994
Added unit tests base on networking logic
ThomasSession Jan 14, 2026
1d35c41
Merge branch 'feature/onion-request-refactor' of https://github.com/s…
ThomasSession Jan 14, 2026
f56770b
Merge branch 'dev' into fix/SES-5105-debug-pro-stats
ThomasSession Jan 14, 2026
735a219
Merge pull request #1827 from session-foundation/fix/SES-5105-debug-p…
ThomasSession Jan 14, 2026
c4f179f
Updated tests
ThomasSession Jan 14, 2026
1ec68b0
Merge branch 'dev' into feature/onion-request-refactor
ThomasSession Jan 14, 2026
300601e
Merge pull request #1792 from session-foundation/feature/onion-reques…
ThomasSession Jan 14, 2026
5e86025
SES-5103 - remodeled logic for animated pro CTAs
ThomasSession Jan 15, 2026
1edee92
SES-5072, SES-5077, SES-5075, SES-5078, SES-5118 - Date formatting c…
ThomasSession Jan 15, 2026
30d89ce
SES-5096 - No Pro status for groups until we enable large groups
ThomasSession Jan 15, 2026
ea92fd6
Adding back snode clock syncing on launch
ThomasSession Jan 15, 2026
ba6c0be
Merge pull request #1830 from session-foundation/fix/pro-fixes-pt1
ThomasSession Jan 15, 2026
2316d74
Snode pool refresh logic
ThomasSession Jan 15, 2026
23620e7
Logic update
ThomasSession Jan 15, 2026
965045d
Set refresh flag on start with cache
ThomasSession Jan 15, 2026
4bbc8ab
Merge branch 'dev' into feature/snode-refresh
ThomasSession Jan 15, 2026
4405064
comment
ThomasSession Jan 15, 2026
599b77e
Merge branch 'feature/snode-refresh' of https://github.com/session-fo…
ThomasSession Jan 15, 2026
cb137e2
SES-5127 - Cancel label change
ThomasSession Jan 15, 2026
175ca97
SES-5074 - key missing
ThomasSession Jan 15, 2026
78f0ea2
SES-5067 - shadow cells for non originating icons
ThomasSession Jan 15, 2026
6fcf0b7
Merge pull request #1831 from session-foundation/feature/snode-refresh
ThomasSession Jan 15, 2026
bc22046
SES-5068 - no network should error out not load
ThomasSession Jan 15, 2026
6f260d0
SES-5079, SES-5069 - success screen logic
ThomasSession Jan 16, 2026
ec0c3b5
SES-5070 - Expired light theming
ThomasSession Jan 16, 2026
37441ef
Merge branch 'dev' into fix/pro-fixes-pt2
ThomasSession Jan 16, 2026
c1cef44
Merge pull request #1833 from session-foundation/fix/pro-fixes-pt2
ThomasSession Jan 16, 2026
070e12b
[Automated] Update translations from Crowdin
mpretty-cyro Jan 19, 2026
d8db4df
Updated snode refresh logic - still need to add request via onion and…
ThomasSession Jan 19, 2026
043098e
Persist snode pool refresh timestamp so that quick uses of the app st…
ThomasSession Jan 19, 2026
3ec1567
Awaiting other networkng changes before calling the proper endpoint v…
ThomasSession Jan 19, 2026
c1c3d98
Merge pull request #1832 from session-foundation/feature/update-crowd…
ThomasSession Jan 19, 2026
efc1216
Merge branch 'dev' into feature/snode-refresh-pt2
ThomasSession Jan 19, 2026
34ff123
Merge pull request #1835 from session-foundation/feature/snode-refres…
ThomasSession Jan 19, 2026
56db19a
SES-5095 - Pro badge in input bar logic
ThomasSession Jan 20, 2026
debd699
SES-5072 - show seconds in pro time formatting for non prod builds
ThomasSession Jan 20, 2026
54409ae
SES-5089 - Keep avatar dialog open after removing an image
ThomasSession Jan 20, 2026
7292226
SES-5086 - character limit in media send
ThomasSession Jan 20, 2026
e99f021
New database structure for storing snode data (#1837)
SessionHero01 Jan 20, 2026
7704ca4
Merge branch 'dev' into fix/pro-fixes-pt3
ThomasSession Jan 20, 2026
4219289
Bump uiTestJunit4Version from 1.10.0 to 1.10.1 (#1836)
dependabot[bot] Jan 20, 2026
99232d9
Handle char limit state in the same state function
ThomasSession Jan 20, 2026
b861cbf
SES-5087 - Pre pro message truncation should be at 10K
ThomasSession Jan 20, 2026
1a8a6fa
SES-5088 - custom images for groups
ThomasSession Jan 20, 2026
e24fcfe
Fix db migration (#1841)
SessionHero01 Jan 20, 2026
c1b16ac
Merge branch 'dev' into fix/pro-fixes-pt3
ThomasSession Jan 20, 2026
d9e105a
Merge pull request #1839 from session-foundation/fix/pro-fixes-pt3
ThomasSession Jan 20, 2026
c1c4ecc
Manage members and Admins QA fixes (#1840)
jbsession Jan 20, 2026
953b324
Prevent restartLoader while initial load is happening (#1829)
jbsession Jan 21, 2026
0a62a38
Handling grace period
ThomasSession Jan 21, 2026
872a642
SES-5071 - grace period warning
ThomasSession Jan 21, 2026
6264d95
SES-5097 - Home page should always show pro badge for a pro user even…
ThomasSession Jan 21, 2026
47f06d2
Enhance path manipulation (#1842)
SessionHero01 Jan 21, 2026
e1bfb9d
SES-5084 - Action on recovery
ThomasSession Jan 21, 2026
d4fa69f
SES-5089 - Make sure we set the animated pro file pic to false in the…
ThomasSession Jan 21, 2026
1023ed2
Merge branch 'dev' into fix/pro-fixes-pt4
ThomasSession Jan 21, 2026
9c597e5
Merge pull request #1843 from session-foundation/fix/pro-fixes-pt4
ThomasSession Jan 21, 2026
150840c
SES-5132 - Local snode pool in case seeds fail.
ThomasSession Jan 21, 2026
476000a
Reseting real seeds
ThomasSession Jan 22, 2026
eb7e512
Script to generate the file on release branches - removed file from a…
ThomasSession Jan 22, 2026
dcf0bfb
Have the generated file available to unit tests
ThomasSession Jan 22, 2026
b72527c
Fixed request
ThomasSession Jan 22, 2026
d194255
data
ThomasSession Jan 22, 2026
571631b
No need to verify the port here
ThomasSession Jan 22, 2026
5c3d7bd
Merge pull request #1845 from session-foundation/feature/local-node-list
ThomasSession Jan 22, 2026
24c2e9c
Path rotation logic - missing test function
ThomasSession Jan 22, 2026
78ee056
Updated tests
ThomasSession Jan 22, 2026
d839af9
[SES-4974] - Fix crash where onion path order changes (#1847)
SessionHero01 Jan 23, 2026
7234063
Merge branch 'dev' into feature/path-rotation
ThomasSession Jan 23, 2026
19fc773
Merge pull request #1846 from session-foundation/feature/path-rotation
ThomasSession Jan 23, 2026
6606200
SES-5082 - adding pro features to outgoing media messages
ThomasSession Jan 26, 2026
6d76e2d
[Automated] Update translations from Crowdin
ThomasSession Jan 27, 2026
dc1e9ff
Merge pull request #1848 from session-foundation/feature/update-crowd…
ThomasSession Jan 27, 2026
486b16c
Merge branch 'dev' into fix/pro-fixes-pt5
ThomasSession Jan 27, 2026
c8e2c69
[Automated] Update translations from Crowdin
ThomasSession Jan 27, 2026
525d76e
Merge pull request #1852 from session-foundation/feature/update-crowd…
ThomasSession Jan 27, 2026
6cac40d
Merge branch 'dev' into fix/pro-fixes-pt5
ThomasSession Jan 27, 2026
be0d481
SES-5071 - Grace period modal before choosing a plan
ThomasSession Jan 27, 2026
eccc593
SES-5101 - Making dev and qa builds default to post pro
ThomasSession Jan 27, 2026
3e4852d
Reworking the pro logic, mostly for groups
ThomasSession Jan 28, 2026
c86da85
I don't think we need the pro context of a legacy group
ThomasSession Jan 28, 2026
2396a53
Clean up
ThomasSession Jan 28, 2026
e377d8d
SES-5067 - better contrast for cell icons on light themes
ThomasSession Jan 28, 2026
971334b
Merge pull request #1854 from session-foundation/fix/pro-fixes-pt5
ThomasSession Jan 28, 2026
38ead5d
SES-5127 : Promotion acceptance lags behind (#1850)
jbsession Jan 28, 2026
712b2f5
SES-5135 : Chat with unknown group member - Misplaced control message…
jbsession Jan 28, 2026
4e3f71c
[Automated] Update translations from Crowdin
Bilb Jan 28, 2026
060e09f
Merge pull request #1855 from session-foundation/feature/update-crowd…
ThomasSession Jan 29, 2026
c3f63e3
[Automated] Update translations from Crowdin
Bilb Jan 29, 2026
6394a81
Changing the colour for ocean dark tertiary background
ThomasSession Jan 29, 2026
32a0e9a
Merge pull request #1857 from session-foundation/feature/update-crowd…
ThomasSession Jan 29, 2026
1dce84b
Merge branch 'dev' into fix/ocean-dark-tertiary
ThomasSession Jan 29, 2026
130e437
Merge pull request #1858 from session-foundation/fix/ocean-dark-tertiary
ThomasSession Jan 29, 2026
8ff32ac
Second phase of network refactoring (#1853)
SessionHero01 Jan 29, 2026
4390745
SES-5170 : Groups show 'Leave' option twice (#1856)
jbsession Jan 29, 2026
603b3ee
Fixed community reaction issues (#1861)
SessionHero01 Jan 29, 2026
489b4c8
Fix community file download and restoring account (#1862)
SessionHero01 Jan 29, 2026
4b5ae91
Fixes a few issues from regression test (#1864)
SessionHero01 Jan 30, 2026
a2f5cd5
SES-5175 : Item carousel is no longer aligned with '+' button (#1863)
jbsession Jan 30, 2026
4bc903a
[SES-5091] - Outgoing message shows pro even when expired (#1865)
SessionHero01 Jan 30, 2026
68f422d
Fix : Manage members and admins QA (#1866)
jbsession Jan 30, 2026
c0f8848
Bump kotlinVersion from 2.2.21 to 2.3.0 (#1860)
dependabot[bot] Feb 1, 2026
40a57a3
[SES-5152] Wrong timestamp used for disappearing after sent (#1870)
SessionHero01 Feb 2, 2026
b8b409a
[SES-5085] - Pro badge not showing for pro who accepting a MR (#1871)
SessionHero01 Feb 2, 2026
bb17b0d
[SES-5073] - Pro badge turns off before renewal (#1873)
SessionHero01 Feb 2, 2026
11f098d
Bump version number
ThomasSession Feb 2, 2026
bc7a488
Fix snode pool retrieve failure (#1875)
SessionHero01 Feb 2, 2026
18b3349
Update seed snode download mechanism (#1879)
SessionHero01 Feb 2, 2026
a854788
Fix : Manage members QA pt.4 (#1881)
jbsession Feb 2, 2026
7f11824
Refactor how we initiate polling (#1882)
SessionHero01 Feb 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 3 additions & 3 deletions .github/workflows/build_and_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
submodules: 'recursive'

- name: Cache Gradle
uses: actions/cache@v4
uses: actions/cache@v5
with:
path: |
~/.gradle/caches
Expand All @@ -54,14 +54,14 @@ jobs:

- name: Upload build reports regardless
if: always()
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
with:
name: build-reports-${{ matrix.variant }}-${{ matrix.build_type }}
path: app/build/reports
if-no-files-found: ignore

- name: Upload artifacts
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
with:
name: session-${{ matrix.variant }}-${{ matrix.build_type }}
path: app/build/outputs/apk/${{ matrix.variant }}/${{ matrix.build_type }}/*-universal*apk
Expand Down
57 changes: 25 additions & 32 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ plugins {
alias(libs.plugins.hilt.android)
alias(libs.plugins.dependency.analysis)
alias(libs.plugins.google.services)
alias(libs.plugins.protobuf.compiler)

id("generate-ip-country-data")
id("local-snode-pool")
id("rename-apk")
id("witness")
}
Expand All @@ -26,8 +26,8 @@ configurations.configureEach {
exclude(module = "commons-logging")
}

val canonicalVersionCode = 436
val canonicalVersionName = "1.30.3"
val canonicalVersionCode = 437
val canonicalVersionName = "1.31.0"

val postFixSize = 10
val abiPostFix = mapOf(
Expand Down Expand Up @@ -86,22 +86,7 @@ kotlin {
}
}

protobuf {
protoc {
artifact = libs.protoc.get().toString()
}

plugins {
generateProtoTasks {
all().forEach {
it.builtins {
create("java") {
}
}
}
}
}
}
val testJvmAgent = configurations.create("mockitoAgent")

android {
namespace = "network.loki.messenger"
Expand Down Expand Up @@ -151,6 +136,13 @@ android {
buildConfigField("String", "USER_AGENT", "\"OWA\"")
buildConfigField("int", "CANONICAL_VERSION_CODE", "$canonicalVersionCode")

buildConfigField("org.thoughtcrime.securesms.pro.ProBackendConfig", "PRO_BACKEND_DEV", """
new org.thoughtcrime.securesms.pro.ProBackendConfig(
"https://pro-backend-dev.getsession.org",
"fc947730f49eb01427a66e050733294d9e520e545c7a27125a780634e0860a27"
)
""".trimIndent())

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
testInstrumentationRunnerArguments["clearPackageData"] = "true"
testOptions {
Expand Down Expand Up @@ -303,6 +295,9 @@ android {

testOptions {
unitTests.isIncludeAndroidResources = true
unitTests.all {
it.jvmArgs("-javaagent:${testJvmAgent.asPath}")
}
}

lint {
Expand Down Expand Up @@ -332,6 +327,8 @@ android {
testNamespace = "network.loki.messenger.test"
}



dependencies {
implementation(project(":content-descriptions"))

Expand Down Expand Up @@ -394,28 +391,19 @@ dependencies {
implementation(libs.androidx.sqlite.ktx)
implementation(libs.sqlcipher.android)
implementation(libs.kotlinx.serialization.json)
implementation(libs.protobuf.java)
implementation(libs.jackson.databind)
implementation(libs.okhttp)
implementation(libs.phrase)
implementation(libs.copper.flow)
implementation(libs.kotlinx.coroutines.android)
implementation(libs.kotlinx.coroutines.guava)
implementation(libs.kovenant)
implementation(libs.kovenant.android)
implementation(libs.opencsv)
implementation(libs.androidx.work.runtime.ktx)
implementation(libs.rxbinding)

if (hasIncludedLibSessionUtilProject) {
implementation(
group = libs.libsession.util.android.get().group,
name = libs.libsession.util.android.get().name,
version = "dev-snapshot"
)
} else {
implementation(libs.libsession.util.android)
}
// If libsession_util project is included into the build, use that, otherwise use the published version
findProject(":libsession-util-android")?.let(::implementation)
?: implementation(libs.libsession.util.android)

implementation(libs.kryo)
testImplementation(libs.junit)
Expand All @@ -434,8 +422,14 @@ dependencies {
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.truth)
testImplementation(libs.truth)
testImplementation(libs.androidx.sqlite.framework)
androidTestImplementation(libs.truth)
testRuntimeOnly(libs.mockito.core)
testImplementation(libs.mockk)
testImplementation(libs.kotlin.test)

// Pull in appropriate JVM agents for unit test
testJvmAgent(libs.mockito.core) { isTransitive = false }

androidTestImplementation(libs.androidx.espresso.core)
androidTestImplementation(libs.androidx.espresso.contrib)
Expand All @@ -449,7 +443,6 @@ dependencies {
androidTestUtil(libs.androidx.orchestrator)

testImplementation(libs.robolectric)
testImplementation(libs.robolectric.shadows.multidex)
testImplementation(libs.conscrypt.openjdk.uber)
testImplementation(libs.turbine)

Expand Down
11 changes: 11 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -218,6 +218,17 @@
<data android:mimeType="text/*" />
<data android:mimeType="*/*" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="audio/*" />
<data android:mimeType="image/*" />
<data android:mimeType="text/plain" />
<data android:mimeType="video/*" />
<data android:mimeType="application/*" />
<data android:mimeType="text/*" />
<data android:mimeType="*/*" />
</intent-filter>
<meta-data
android:name="android.service.chooser.chooser_target_service"
android:value=".service.DirectShareService" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ interface StorageProtocol {
// Servers
fun setServerCapabilities(server: String, capabilities: List<String>)
fun getServerCapabilities(server: String): List<String>?
fun clearServerCapabilities(server: String)

// Open Groups
suspend fun addOpenGroup(urlAsString: String)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ import org.session.libsession.database.MessageDataProvider
import org.session.libsession.database.StorageProtocol
import org.session.libsession.messaging.groups.GroupManagerV2
import org.session.libsession.messaging.groups.LegacyGroupDeprecationManager
import org.session.libsession.messaging.jobs.MessageSendJob
import org.session.libsession.messaging.notifications.TokenFetcher
import org.session.libsession.snode.SnodeClock
import org.session.libsession.network.SnodeClock
import org.session.libsession.network.onion.PathManager
import org.session.libsession.utilities.ConfigFactoryProtocol
import org.session.libsession.utilities.Device
import org.session.libsession.utilities.TextSecurePreferences
Expand All @@ -28,14 +28,14 @@ class MessagingModuleConfiguration @Inject constructor(
val configFactory: ConfigFactoryProtocol,
val tokenFetcher: TokenFetcher,
val groupManagerV2: GroupManagerV2,
val clock: SnodeClock,
val preferences: TextSecurePreferences,
val deprecationManager: LegacyGroupDeprecationManager,
val recipientRepository: RecipientRepository,
val avatarUtils: AvatarUtils,
val proStatusManager: ProStatusManager,
val messageSendJobFactory: MessageSendJob.Factory,
val json: Json,
val snodeClock: SnodeClock,
val pathManager: PathManager
) {

companion object {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package org.session.libsession.messaging.file_server

import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
import okhttp3.HttpUrl.Companion.toHttpUrl
import org.thoughtcrime.securesms.api.server.ServerApiErrorManager
import org.thoughtcrime.securesms.api.ApiExecutorContext
import org.thoughtcrime.securesms.api.http.HttpBody
import org.thoughtcrime.securesms.api.http.HttpRequest
import org.thoughtcrime.securesms.api.http.HttpResponse
import org.thoughtcrime.securesms.api.server.ServerApi
import java.time.ZonedDateTime
import java.time.format.DateTimeFormatter

class FileDownloadApi @AssistedInject constructor(
@Assisted private val fileId: String,
errorManager: ServerApiErrorManager,
) : ServerApi<FileDownloadApi.Response>(errorManager) {
override fun buildRequest(
baseUrl: String,
x25519PubKeyHex: String
): HttpRequest {
return HttpRequest(
url = "$baseUrl/file/$fileId".toHttpUrl(),
method = "GET",
headers = emptyMap(),
body = null
)
}

override suspend fun handleSuccessResponse(
executorContext: ApiExecutorContext,
baseUrl: String,
response: HttpResponse
): Response {
return Response(
data = response.body,
expires = response.parseFileServerExpiresHeader()
)
}

class Response(
val data: HttpBody,
val expires: ZonedDateTime?
)

@AssistedFactory
interface Factory {
fun create(fileId: String): FileDownloadApi
}

companion object {
fun HttpResponse.parseFileServerExpiresHeader(): ZonedDateTime? {
return headers["expires"]?.let {
ZonedDateTime.parse(it, DateTimeFormatter.RFC_1123_DATE_TIME)
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package org.session.libsession.messaging.file_server

import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
import okhttp3.HttpUrl.Companion.toHttpUrl
import org.thoughtcrime.securesms.api.server.ServerApiErrorManager
import org.thoughtcrime.securesms.api.ApiExecutorContext
import org.thoughtcrime.securesms.api.http.HttpRequest
import org.thoughtcrime.securesms.api.http.HttpResponse
import org.thoughtcrime.securesms.api.server.ServerApi

class FileRenewApi @AssistedInject constructor(
@Assisted private val fileId: String,
errorManager: ServerApiErrorManager,
) : ServerApi<Unit>(errorManager) {

override fun buildRequest(
baseUrl: String,
x25519PubKeyHex: String
): HttpRequest {
return HttpRequest(
url = "$baseUrl/file/$fileId/extend".toHttpUrl(),
method = "POST",
headers = emptyMap(),
body = null,
)
}

override suspend fun handleSuccessResponse(
executorContext: ApiExecutorContext,
baseUrl: String,
response: HttpResponse
) = Unit

@AssistedFactory
interface Factory {
fun create(fileId: String): FileRenewApi
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package org.session.libsession.messaging.file_server

import kotlinx.serialization.Serializable
import network.loki.messenger.libsession_util.Curve25519
import okhttp3.HttpUrl
import okhttp3.HttpUrl.Companion.toHttpUrl
import org.session.libsession.utilities.serializable.HttpUrlSerializer
import org.session.libsignal.utilities.Hex

@Serializable
data class FileServer(
Expand All @@ -12,6 +14,12 @@ data class FileServer(
val ed25519PublicKeyHex: String
) {
constructor(url: String, ed25519PublicKeyHex: String) : this(url.toHttpUrl(), ed25519PublicKeyHex)

val x25519PubKeyHex: String by lazy {
Hex.toStringCondensed(
Curve25519.pubKeyFromED25519(Hex.fromStringCondensed(ed25519PublicKeyHex))
)
}
}

val HttpUrl.isOfficial: Boolean
Expand Down
Loading