summaryrefslogtreecommitdiffhomepage
path: root/android/app/src
AgeCommit message (Collapse)AuthorFilesLines
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-07-31Set max priority on the boot receiverJonatan Rhodin1-1/+1
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-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-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-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-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.
2025-06-18Enable opt-in to MTE async modeCameron Aaron1-0/+2
2025-06-16Sort split tunneling apps in the correct orderJonatan Rhodin2-2/+20
2025-06-16Remove google pay iconJonatan Rhodin1-18/+0
2025-06-09Update payment flow within the appJonatan Rhodin39-1904/+2226
Also add support for 3 months in-app purchases
2025-06-05Fix typosomahs1-1/+1
2025-06-04Fix connectivity manager util testsJonatan Rhodin1-2/+3
2025-06-03Listen for all network events to fix missing default network eventsJonatan Rhodin1-0/+3
2025-05-28Disable Firebase billing loggingKalle Lindström1-0/+9
2025-05-26Fix and update lint baselineDavid Göransson8-45/+42
2025-05-15Fix Device IP version header not clickableDavid Göransson1-0/+1
2025-05-15Fix another testJonatan Rhodin1-0/+1