summaryrefslogtreecommitdiffhomepage
path: root/android/app
AgeCommit message (Collapse)AuthorFilesLines
2025-08-15Replace call to deprecated functionJonatan Rhodin1-8/+1
2025-08-15Improve compose stack traceJonatan Rhodin1-0/+6
2025-08-15Fix lint issuesJonatan Rhodin2-3/+5
2025-08-12Move expiry notification handling to applicationKalle Lindström3-30/+49
2025-08-11Add tests to ensure expected behavior in the payment flowJonatan Rhodin1-0/+56
2025-08-08Fix issue with with the select location list navigationJonatan Rhodin1-1/+2
2025-08-08Clear account expiry datastore pref on logoutKalle Lindström2-2/+13
2025-08-08Replace select hop code with use casesJonatan Rhodin34-306/+689
Also split the select hop code into select hop and modify multihop Refactor relay list type
2025-08-05Use HorizontalPager on TV devices in select locationDavid Göransson6-60/+117
Also allow for using swipe to switch between enter and exit lists
2025-08-05Fix test flakiness by adding missing TestCoroutineRuleJonatan Rhodin3-9/+6
2025-08-04Use goAsync() api and remove TimeChangedReceiverKalle Lindström5-59/+6
The TimeChangedReceiver was not actually needed because AlarmManager.RTC uses a UTC timestamp that we convert the triggerAt ZonedDateTime to. So the trigger time is scheduled in UTC+0 and will thus trigger at the correct time redardless of time zone changes.
2025-08-04Attempt to fix potential ANRKalle Lindström2-3/+27
In onReceive in NotificationAlarmReceiver onBlocking() was used which could potentially take too much time and cause an ANR. This PR changes the onBlocking() call to instead use the goAsync() API so that the onReceive method can return immediately.
2025-08-04Add additional logging on login failureDavid Göransson2-3/+8
2025-08-04Fix crash with DAITA and multihop recentsKalle Lindström1-1/+5
2025-08-01Fix new lint warningsDavid Göransson25-129/+132
2025-08-01Handle app icons with zero sizeDavid Göransson2-8/+7
Co-authored-by: Jonatan Rhodin <jonatan.rhodin@mullvad.net>
2025-08-01Fix ktor parsing errorDavid Göransson1-2/+8
App module had transitive dependencies using a older version at runtime of serializationx. However, when compiling the test:e2e module a later version than 1.8.0 was used through ktor. This caused deserialization in runtime to go looking for a method that didn't exist. By putting an explicit version in the app module we make sure to use a version that is compatible with ktor.
2025-07-31Set max priority on the boot receiverJonatan Rhodin1-1/+1
2025-07-31Support 16kb page sizeDavid Göransson1-0/+7
2025-07-31Enable profileable tag in AndroidManifest.xmlKalle Lindström1-0/+4
We need to set this in order for a release build of the app to the profileable.
2025-07-30Migrate most settings screens to new Lc state formatJonatan Rhodin49-932/+1267
2025-07-29Add release-debuginfo config and Cargo profileKalle Lindström1-6/+17
When doing performance profiling we want to used the optimized Rust artifacts but we also want to keep the debug symbols.
2025-07-28Add named arg detekt testKalle Lindström33-108/+282
Adds a custom detekt rule that checks that all Screen and Dialog composables are called with only named arguments.
2025-07-24Update Android native debug instructionsKalle Lindström1-1/+4
2025-07-23Enable long press context menu for recentsKalle Lindström1-3/+19
2025-07-23Update tests on AndroidDavid Lönnhager2-0/+4
2025-07-23Update to new protobuf protocolDavid Göransson1-12/+5
2025-07-23Support new features message on AndroidDavid Göransson1-1/+1
2025-07-22Implement select location recents uiKalle Lindström25-144/+791
2025-07-18Fix keyboard not showing on searchDavid Göransson1-1/+1
2025-07-17Fix focus on notification closeDavid Göransson2-0/+5
2025-07-14Remove usage of backgroundDavid Göransson5-13/+3
2025-07-14Remove footer background colorDavid Göransson1-4/+1
2025-07-10Implement recents support in daemonKalle Lindström1-0/+2
2025-07-10Add e2e test for Google play purchasesDavid Göransson2-2/+10
2025-07-09Add runTest to missing testsDavid Göransson1-8/+9
2025-07-09Fix more flakinessDavid Göransson1-4/+7
2025-07-09Remove nullable paymentStateDavid Göransson3-13/+43
2025-07-09Fix test flakinessDavid Göransson2-3/+9
2025-07-04Restructure & redesign componentsDavid Göransson33-1082/+386
- Change to new look and feel of list items - Add support for clicking inactive relays, with info message if relay, country or custom list is unavailable.
2025-07-04Create new design system moduleDavid Göransson1-0/+1
2025-07-03Fix gradle kotlinOptions warningsDavid Göransson1-11/+11
2025-07-02Update fonts to be more inline with design and material designJonatan Rhodin67-204/+210
2025-07-01Fix failing unit tests in AddTimeViewModelTestJonatan Rhodin1-10/+8
2025-06-30Reset purchase state when closing the add time bottom sheetJonatan Rhodin3-35/+35
Also immediately update the expiry date after a successful purchase
2025-06-30Fix bottom bar bottom marginJonatan Rhodin2-6/+20
2025-06-30Enable alpha publishing of prod appAlbin1-0/+1
2025-06-24Enable support for creating a custom list with locationsJonatan Rhodin3-24/+8
2025-06-19Replace mocked lists with normal lists with mocked itemsJonatan Rhodin2-4/+4
2025-06-19Use AlarmManager for notificationsKalle Lindström22-276/+431
Instead of scheduling system notifications from a flow we now schedule them independently from the app lifecycle via AlarmManager. This is done so that for example an expiry notification that the user dismissed won't get redisplayed if the app process gets killed and then restarted. When the account exiry time is fetched we schedule an alarm that will show a notification 3 days before the account time expires. This alarm then also schedules a new alarm to show the following notification and so on. To make this work this PR also introduces two new broadcast receivers; one on boot received listener and one on time time/timezone changed listener. Beause Android clears alarms when the devices is rebooted/the time is changed we need these listeners to re-trigger the alarm. To enable the broadcast receivers to re-trigger the alarm we also have to persist the expiry time in the DataStore preferences.