fix: remove redundant NotificationPoller to prevent duplicate notifications #82

Merged
rafaga21 merged 3 commits from feat/version-update-notification into master 2026-06-13 17:51:28 -04:00
6 changed files with 25 additions and 30 deletions

View File

@@ -13,8 +13,8 @@ android {
applicationId = "com.devlab.app"
minSdk = 26
targetSdk = 37
versionCode = 16
versionName = "1.8.4"
versionCode = 17
versionName = "1.8.5"
}
buildTypes {

View File

@@ -62,19 +62,6 @@ class MainActivity : ComponentActivity() {
requestNotificationPermission()
checkForUpdates()
lifecycle.addObserver(LifecycleEventObserver { _, event ->
when (event) {
Lifecycle.Event.ON_RESUME -> {
ServerManagerApp.instance.notificationPoller?.start()
ServerManagerApp.instance.notificationPoller?.checkNow()
}
Lifecycle.Event.ON_PAUSE -> {
ServerManagerApp.instance.notificationPoller?.stop()
}
else -> {}
}
})
setContent {
ServerManagerTheme {
AppRoot()
@@ -158,15 +145,6 @@ fun AppRoot() {
}
}
DisposableEffect(Unit) {
ServerManagerApp.instance.notificationPoller?.onCountChanged = { count ->
unreadCount = count
}
onDispose {
ServerManagerApp.instance.notificationPoller?.onCountChanged = null
}
}
Scaffold(
bottomBar = {
if (inLoggedInArea) {

View File

@@ -3,20 +3,15 @@ package com.devlab.app
import android.app.Application
import com.devlab.app.service.NotificationForegroundService
import com.devlab.app.util.NotificationHelper
import com.devlab.app.util.NotificationPoller
import com.devlab.app.worker.NotificationWorker
class ServerManagerApp : Application() {
var notificationPoller: NotificationPoller? = null
private set
override fun onCreate() {
super.onCreate()
instance = this
NotificationHelper.createChannels(this)
NotificationWorker.schedule(this)
NotificationForegroundService.start(this)
notificationPoller = NotificationPoller(this)
}
companion object {

Binary file not shown.

View File

@@ -299,6 +299,18 @@ class AdminController
return;
}
if ($userId) {
$userModel = new User();
$targetUser = $userModel->findById($userId);
if (!$targetUser || empty($targetUser['notifications_enabled'])) {
$this->view->json([
'success' => true,
'message' => 'Notification saved to database. User has notifications disabled.',
]);
return;
}
}
$notificationModel = new Notification();
$noteId = $notificationModel->create([
'user_id' => $userId,

View File

@@ -54,6 +54,12 @@ class FCMService
{
if (!$this->isConfigured()) return false;
$enabled = $this->db->fetch(
'SELECT notifications_enabled FROM users WHERE id = ? AND notifications_enabled = 1',
[$userId]
);
if (!$enabled) return false;
$tokens = $this->db->fetchAll(
'SELECT id, token FROM user_fcm_tokens WHERE user_id = ?',
[$userId]
@@ -78,7 +84,11 @@ class FCMService
{
if (!$this->isConfigured()) return 0;
$tokens = $this->db->fetchAll('SELECT id, token FROM user_fcm_tokens');
$tokens = $this->db->fetchAll(
'SELECT f.id, f.token FROM user_fcm_tokens f
JOIN users u ON u.id = f.user_id
WHERE u.notifications_enabled = 1'
);
if (empty($tokens)) return 0;
$sent = 0;