Commit graph

332 commits

Author SHA1 Message Date
James Rich
25111552eb
feat: Add support for sharing contacts via deeplink (#2336)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-03 12:42:04 +00:00
James Rich
91dd6dbef4
Refactor: Replace AppIntro library with Compose implementation (#2332)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-07-03 11:27:08 +00:00
James Rich
ca3c787e71
Refactor: Inject BluetoothViewModel into ConnectionsScreen (#2228) 2025-06-22 18:26:04 -05:00
James Rich
83e6c6cc31
fix: refactor MainActivity to use lifecycleScope for coroutines (#2153) 2025-06-18 14:30:00 -05:00
James Rich
95224c20ef
feat: adaptive nav (#2079) 2025-06-13 02:34:01 +00:00
James Rich
89462be97a
fix: ensure bg loc permissions, unbind service (#2050) 2025-06-07 15:42:29 -05:00
James Rich
6153cfdab1
Refactor: Use FLAG_ACTIVITY_SINGLE_TOP for MainActivity intents (#2022) 2025-06-04 19:20:30 +00:00
James Rich
868d705b2d
fix: per-device location sharing (#2010) 2025-06-03 21:04:24 +00:00
James Rich
6915249121
refactor: Move version checks to Main.kt (#1995) 2025-05-31 20:36:35 -05:00
James Rich
8d231ff125
refactor: Update notification and service handling (#1993) 2025-05-31 20:02:23 +00:00
James Rich
ad1897c564
Refactor: organize ui screens to separate packages (#1982) 2025-05-29 18:18:45 -05:00
James Rich
ef1c71722a
fix: respect keyboard, edgeToEdge tweaks (#1968) 2025-05-28 12:33:00 -05:00
James Rich
3eefe4b66c
refactor: edgeToEdge tweaks, chip elevation (#1962) 2025-05-28 09:34:08 -05:00
James Rich
6332b3bd42
feat(node): consolidate node chip and menu (#1941) 2025-05-26 19:36:32 -05:00
James Rich
9e2fb3792f
fix(#1874): Check that Meshtastic URL is for a channel set (#1890) 2025-05-21 03:42:29 +00:00
James Rich
38b9515fca
refactor: Move "provide location" preference to DataStore (#1877) 2025-05-19 21:23:29 +00:00
James Rich
4cba13ea14
feat: material3 (#1862) 2025-05-17 11:39:53 -05:00
James Rich
8cde47bdf9
refactor: migrate to Compose navigation (#1835)
Co-authored-by: andrekir <andrekir@pm.me>
2025-05-15 08:05:30 -05:00
James Rich
d40672df40
fix #1654: Move the app rating dependency to googleImplementation (#1656)
* Move the app rating dependency to googleImplementation

The `awesome.app.rating` dependency is now under `googleImplementation` instead of `implementation` in `app/build.gradle`.

* Refactor alert DND dialog padding

Use `dpToPx` for padding in the alert DND dialog for better consistency.
2025-03-07 14:25:46 -06:00
James Rich
d78bea2365
feat: Show ALERT_APP notifications and override DND (#1515)
* feat: Show alert notifications and override silent mode

This commit adds support for showing alert notifications with high priority and the ability to override silent mode to ensure they are delivered to the user.

The changes include:
- Adding `showAlertNotification` function which overrides silent mode and configures a custom volume, shows a notification with high priority.
- Creating a new notification channel for alerts.
- Adding the alert app port number to the list of remembered data types.
- Modifying `rememberDataPacket` to check for alert app messages and show alert notification.

* Add notification policy access permission and DND override for alerts

This commit adds the `ACCESS_NOTIFICATION_POLICY` permission to the manifest and requests this permission from the user. It also adds a check for notification policy access in the MainActivity, and if it's not granted, shows a rationale dialog.

Additionally, the commit adds a notification override to the `showAlertNotification` function in `MeshServiceNotifications` to temporarily disable DND for alert notifications and restore the original ringer settings afterwards.

* Refactor: Enhance Android Notification and DND Handling

-   **Notification Channel Improvements:**
    -   Added `notificationLightColor` for better customization.
    -   Set `enableLights` and `enableVibration` in the alert channel.
    -   Use `alert.mp3` sound for alert channel.
-   **DND Permission Request:**
    -   Introduced a new permission request flow for Do Not Disturb (DND) access.
    -   Show a rationale dialog before requesting permission.
    -   Persist if rationale was shown to avoid re-prompting.
    - Added a `notificationPolicyAccessLauncher` to handle the permission request result.
-   **Critical Alert Text**
    - Added critical alert text in strings.
    - Used critical alert text if the alert message is empty.
-   **Other Changes**
    - Removed unused imports and constants.
    - Updated snackbar to support action.

* Refactor alert notification logic

- Change `notificationLightColor` to be lazy initialized.
- Update alert notification to use `CATEGORY_ALARM`.
- Use `dataPacket.alert` instead of `dataPacket.text` for alert content.
- Add `alert` property to `DataPacket` to handle alert messages.

* Set notification light color back to blue.

* Request notification permissions on grant

The app now checks for notification policy access after notification permissions are granted.

* make detekt happy

* updates dnd dialog text

* Refactor notification channel creation and critical alerts

- Initialize notification channels on service creation.
- Remove `ACCESS_NOTIFICATION_POLICY` permission.
- Modify the logic for requesting "Do Not Disturb" override permission to align with channel settings.
- Add new string resources for Alerts Channel Settings.
- Update wording for critical alert DND override.
- Update DND override request flow.
- Create notification channels on the service creation using `initChannels`.
- Adjust logic to check for "Do Not Disturb" override permission to align with notification channel settings.
- Ensure notification channels are created only if they do not already exist.

* refactor: Update DnD dialog with instructions for Samsung

- Renamed "Alerts Channel Settings" to "Channel Settings".
- Added Samsung-specific instructions and a link to Samsung's support page for Do Not Disturb mode in the alerts dialog.
- Updated the dialog to display Samsung-specific instructions when on a Samsung device.

* Refactor critical alerts instructions

- Updated the critical alerts instructions to include a link to Samsung's support page directly within the alert dialog.
- Removed the separate "Samsung Instructions" string and incorporated the information into the main instruction text, improving clarity and reducing redundancy.
- Made improvements to the UI.
2025-03-05 07:28:52 -06:00
Joshua Soberg
c597b3b000
fix #1554 (a11y): Add content description to tabs for screen reader support (#1631) 2025-03-02 09:22:24 -06:00
andrekir
a3a3958dfb refactor: move NavGraph to navigation package 2025-01-11 09:29:48 -03:00
andrekir
13b615a470 chore: update license header 2025-01-02 07:00:51 -03:00
andrekir
96087cca59 refactor: move message files to separate package 2024-12-03 09:14:32 -03:00
Espié.R
d76eac258b
feat: add text/plain intent to send message (#1389) 2024-11-30 14:12:08 -03:00
andrekir
44d195a4a5 refactor: Messages navigation to single contactKey argument 2024-11-28 08:45:44 -03:00
andrekir
1219d3037e chore: add GPL-3.0 license headers to source files 2024-11-26 08:54:18 -03:00
andrekir
4e9055c9b1 fix: update channel URL to match channel selection 2024-11-25 20:09:50 -03:00
andrekir
f73d909cd0 refactor: consolidate QR code scanning methods 2024-11-21 10:32:37 -03:00
andrekir
cfdb245da2 refactor: convert connectionState to StateFlow 2024-11-12 09:15:45 -03:00
James Rich
80e915a36c
feat: show unique messaging notifications per contact (#1381)
* Show unique notifications per contact

Instead of a single notification for all messages, each contact now has its own, unique notification. This uses the `NotificationCompat.MessagingStyle` and the contact's name to create distinct notifications, enhancing message organization.

* feat: Add notification tap action to open contacts tab

This is done by:
- Adding an intent extra to the notification with the contact key for future use to navigate to the message thread.
- Adding a new action to the MainActivity to handle the intent.
- Updating the message notification to include the intent.

* Open message notification to the correct conversation

Adds an extra to the message notification intent to open the correct conversation. This ensures that when a user taps on a message notification, they are taken to the conversation with the sender of that message.
2024-11-04 19:05:39 -03:00
L. Pereira
abb4db8faf
feat: Short duration for the "notification permissions denied" snackbar (#1346) 2024-10-26 05:55:21 -03:00
andrekir
3ac0e8c28e refactor: extract NavGraph from RadioConfig 2024-10-21 06:07:28 -03:00
andrekir
fe56d257f5 chore: add detekt formatting rule set
https://detekt.dev/docs/next/rules/formatting/
2024-10-14 07:56:29 -03:00
andrekir
c0692b80ec refactor: remove legacy BLE characteristic 2024-10-02 20:00:02 -03:00
AddisonTustin
e4c6000a10
feat: support add=true in QR codes (#1151) 2024-07-28 08:50:54 -03:00
andrekir
db500c5200 refactor: migrate UsersFragment to Compose 2024-06-23 08:24:29 -03:00
andrekir
c15c3d8c09 refactor(config): pass destNum via setFragmentResultListener 2024-04-15 17:56:47 -03:00
andrekir
6e83870295 fix: revert main tab reference change
reverts https://github.com/meshtastic/Meshtastic-Android/pull/844/commits/4add8f97da5cc24455fff5ed7c7a7e3064e3d534
2024-02-18 08:01:51 -03:00
Davis
2bfda9784f
Feature: Jump to node info from message (#844)
* Highlight the node in the node list tab when the user taps on the node chip in messages

* Represent main tabs as enum for more reliable referencing

* Extract tab labels to string resources for easier translation
Annotate resource IDs with their corresponding Android types

* Index off nodes actually in the adapter since they are sorted

* Update viewmodel when tab changes to prevent jumping to other tabs in onResume

* Mark strings as non-translatable for now
2024-02-13 18:32:52 -03:00
Andre K
c8f93db00d
refactor: implement repository pattern for NodeDB (#835)
- enforce Unidirectional Data Flow removing nodeDB updates via `MainActivity`/`UIState`
- merge `MyNodeInfoDao` into `NodeInfoDao`
- move node list re-indexing to database
2024-02-06 20:03:15 -03:00
andrekir
3922bfbffb refactor: move RadioInterfaceService out of Activity / Fragment 2023-11-03 19:01:19 -03:00
andrekir
c6a97e7cc8 refactor: move app intro after language picker 2023-11-03 18:57:44 -03:00
Mike Cumings
a7b0d70c03
Continued work on #369: Inject radio interface implementations (#481)
This required creation of new interfaces in order to break the
static coupling.  This also allowed for the removal of some plumbing
of dependencies of these implementations since they are now directly
injected.
2023-10-24 16:09:18 -03:00
andrekir
13c76f49ee refactor: implement repository pattern for ConnectionState 2023-10-21 07:24:46 -03:00
andrekir
c489717ad1 refactor: convert NodeDB to repository 2023-10-20 19:38:18 -03:00
andrekir
8d22a23fe1 feat: warn user when duty cycle limit reached
closes #540
2023-10-12 22:52:54 -03:00
andrekir
4e7ea67da0 refactor: convert ChannelSet to protobuf extensions 2023-10-07 08:47:56 -03:00
andrekir
37dad9b6fa refactor: move IMeshService instance to repository 2023-10-06 17:54:37 -03:00
andrekir
4e75a0c879 refactor(config): improve null node handling 2023-09-26 18:27:05 -03:00