diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c2fee4c..5e87546 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -14,10 +14,10 @@ android { defaultConfig { applicationId = "com.example.notimanager" - minSdk = 28 + minSdk = 26 targetSdk = 35 versionCode = 1 - versionName = "1.0" + versionName = "1.0.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" resValue("string", "admob_app_id", System.getenv("ADMOB_APP_ID") ?: "") resValue("string", "admob_banner_id", System.getenv("ADMOB_BANNER_ID") ?: "") diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3145652..9d98232 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -19,7 +19,7 @@ tools:targetApi="35"> + android:value="ca-app-pub-4472438519886520~1562656818"/> - NotificationAppItemView( - notification = notification, - onClick = { - navController.navigate("titleScreen/${notification.appName}") - }, - viewModel = viewModel, - priorityViewModel = priorityViewModel - ) - } - if (currentNotiPriority.isNotEmpty()) { + if(currentNotiPriority.isNotEmpty()){ + items(currentNotiPriority) { notification -> + NotificationAppItemView( + notification = notification, + onClick = { + navController.navigate("titleScreen/${notification.appName}") + }, + viewModel = viewModel, + priorityViewModel = priorityViewModel + ) + } item { HorizontalDivider() } } - - items(currentNoti) { notification -> - NotificationAppItemView( - notification = notification, - onClick = { - navController.navigate("titleScreen/${notification.appName}") - }, - viewModel = viewModel, - priorityViewModel = priorityViewModel - ) + if (currentNoti.isNotEmpty()){ + items(currentNoti) { notification -> + NotificationAppItemView( + notification = notification, + onClick = { + navController.navigate("titleScreen/${notification.appName}") + }, + viewModel = viewModel, + priorityViewModel = priorityViewModel + ) + } } } diff --git a/app/src/main/java/com/example/notimanager/presentation/ui/component/list/NotificationTitleListView.kt b/app/src/main/java/com/example/notimanager/presentation/ui/component/list/NotificationTitleListView.kt index eaf7074..5479714 100644 --- a/app/src/main/java/com/example/notimanager/presentation/ui/component/list/NotificationTitleListView.kt +++ b/app/src/main/java/com/example/notimanager/presentation/ui/component/list/NotificationTitleListView.kt @@ -33,7 +33,7 @@ import com.example.notimanager.presentation.ui.component.item.NotificationTitleI fun NotificationTitleListView( navController: NavController, viewModel: NotificationTitleViewModel, - priorityViewModel: NotificationTitlePriorityViewModel + priorityViewModel: NotificationTitlePriorityViewModel, ) { val notificationTitleState by viewModel.notificationTitleState.observeAsState( NotificationTitleState() @@ -63,42 +63,44 @@ fun NotificationTitleListView( LazyColumn( modifier = Modifier.fillMaxSize().padding(bottom = 56.dp) ) { - items(currentNotiPriority) { notification -> - NotificationTitleItemView(notification = notification, onClick = { - if (notification.subText == "") navController.navigate("notificationScreen/${viewModel.getAppName()}/${getEncodedString(notification.title)}/False") - else navController.navigate("notificationScreen/${viewModel.getAppName()}/${getEncodedString(notification.subText)}/True") - }, viewModel = viewModel, priorityViewModel = priorityViewModel) - } + if(currentNotiPriority.isNotEmpty()){ + items(currentNotiPriority) { notification -> + NotificationTitleItemView(notification = notification, onClick = { + if (notification.subText == "") navController.navigate("notificationScreen/${viewModel.getAppName()}/${getEncodedString(notification.title)}/False") + else navController.navigate("notificationScreen/${viewModel.getAppName()}/${getEncodedString(notification.subText)}/True") + }, viewModel = viewModel, priorityViewModel = priorityViewModel) + } - if (currentNotiPriority.isNotEmpty()){ item { HorizontalDivider() } } - - items(currentNoti) { notification -> - NotificationTitleItemView(notification = notification, onClick = { - if (notification.subText == "") { - viewModel.updateAsRead(notification.title) - navController.navigate( - "notificationScreen/${viewModel.getAppName()}/${ - getEncodedString( - notification.title - ) - }/False" - ) - } - else { - viewModel.updateAsSubText(notification.subText) - navController.navigate( - "notificationScreen/${viewModel.getAppName()}/${ - getEncodedString( - notification.subText - ) - }/True" - ) - }}, viewModel = viewModel, priorityViewModel = priorityViewModel) + if(currentNoti.isNotEmpty()){ + items(currentNoti) { notification -> + NotificationTitleItemView(notification = notification, onClick = { + if (notification.subText == "") { + viewModel.updateAsRead(notification.title) + navController.navigate( + "notificationScreen/${viewModel.getAppName()}/${ + getEncodedString( + notification.title + ) + }/False" + ) + } + else { + viewModel.updateAsSubText(notification.subText) + navController.navigate( + "notificationScreen/${viewModel.getAppName()}/${ + getEncodedString( + notification.subText + ) + }/True" + ) + }}, viewModel = viewModel, priorityViewModel = priorityViewModel) + } } + } AndroidView( diff --git a/app/src/main/java/com/example/notimanager/presentation/ui/screen/DateFormatterScreen.kt b/app/src/main/java/com/example/notimanager/presentation/ui/screen/DateFormatterScreen.kt index 11f8d55..b6eef7a 100644 --- a/app/src/main/java/com/example/notimanager/presentation/ui/screen/DateFormatterScreen.kt +++ b/app/src/main/java/com/example/notimanager/presentation/ui/screen/DateFormatterScreen.kt @@ -30,7 +30,9 @@ fun DateFormatterScreen( CommonTopAppBar(title) { if (!isClicked) { isClicked = true - navController.popBackStack() + if (navController.previousBackStackEntry != null) { + navController.popBackStack() + } } } } diff --git a/app/src/main/java/com/example/notimanager/presentation/ui/screen/FilteredListScreen.kt b/app/src/main/java/com/example/notimanager/presentation/ui/screen/FilteredListScreen.kt index b9981be..f27c6c1 100644 --- a/app/src/main/java/com/example/notimanager/presentation/ui/screen/FilteredListScreen.kt +++ b/app/src/main/java/com/example/notimanager/presentation/ui/screen/FilteredListScreen.kt @@ -33,8 +33,9 @@ fun FilteredListScreen( CommonTopAppBar(title = title, onBackClick = { if (!isClicked){ isClicked = true - - navController.popBackStack() + if (navController.previousBackStackEntry != null) { + navController.popBackStack() + } } }) diff --git a/app/src/main/java/com/example/notimanager/presentation/ui/screen/NotificationScreen.kt b/app/src/main/java/com/example/notimanager/presentation/ui/screen/NotificationScreen.kt index 453bb95..429ec70 100644 --- a/app/src/main/java/com/example/notimanager/presentation/ui/screen/NotificationScreen.kt +++ b/app/src/main/java/com/example/notimanager/presentation/ui/screen/NotificationScreen.kt @@ -51,7 +51,9 @@ fun NotificationScreen(navController: NavController, appName: String = "", title CommonTopAppBar(title = title, onBackClick = { if(!isClicked){ isClicked = true - navController.popBackStack() + if (navController.previousBackStackEntry != null) { + navController.popBackStack() + } } } ) } diff --git a/app/src/main/java/com/example/notimanager/presentation/ui/screen/NotificationSubScreen.kt b/app/src/main/java/com/example/notimanager/presentation/ui/screen/NotificationSubScreen.kt index d4bb7ac..baecd1c 100644 --- a/app/src/main/java/com/example/notimanager/presentation/ui/screen/NotificationSubScreen.kt +++ b/app/src/main/java/com/example/notimanager/presentation/ui/screen/NotificationSubScreen.kt @@ -50,9 +50,10 @@ fun NotificationSubScreen(navController: NavController, appName: String = "", su CommonTopAppBar(title = subText, onBackClick = { if(!isClicked){ isClicked = true - navController.popBackStack() + if (navController.previousBackStackEntry != null) { + navController.popBackStack() + } } - }) } ) { innerPadding -> diff --git a/app/src/main/java/com/example/notimanager/presentation/ui/screen/SettingScreen.kt b/app/src/main/java/com/example/notimanager/presentation/ui/screen/SettingScreen.kt index 6e43bb9..8505036 100644 --- a/app/src/main/java/com/example/notimanager/presentation/ui/screen/SettingScreen.kt +++ b/app/src/main/java/com/example/notimanager/presentation/ui/screen/SettingScreen.kt @@ -30,7 +30,9 @@ fun SettingScreen( CommonTopAppBar(title){ if (!isClicked){ isClicked = true - navController.popBackStack() + if (navController.previousBackStackEntry != null) { + navController.popBackStack() + } } } } diff --git a/app/src/main/java/com/example/notimanager/presentation/ui/screen/TitleScreen.kt b/app/src/main/java/com/example/notimanager/presentation/ui/screen/TitleScreen.kt index c1be346..1703451 100644 --- a/app/src/main/java/com/example/notimanager/presentation/ui/screen/TitleScreen.kt +++ b/app/src/main/java/com/example/notimanager/presentation/ui/screen/TitleScreen.kt @@ -1,5 +1,6 @@ package com.example.notimanager.presentation.ui.screen +import android.util.Log import androidx.compose.foundation.layout.padding import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider @@ -35,6 +36,15 @@ fun TitleScreen(navController: NavController, appName: String = ""){ val coroutineScope = rememberCoroutineScope() var isClicked by remember { mutableStateOf(false) } + val onRefresh: () -> Unit = { + isRefreshing = true + viewModel.loadNotificationTitles() + priorityViewModel.loadNotificationTitles() + coroutineScope.launch { + delay(500) + isRefreshing = false + } + } LaunchedEffect(appName) { viewModel.setArgs(appName) @@ -51,9 +61,9 @@ fun TitleScreen(navController: NavController, appName: String = ""){ CommonTopAppBar(title = appName, onBackClick = { if (!isClicked) { isClicked = true - - navController.popBackStack() - + if (navController.previousBackStackEntry != null) { + navController.popBackStack() + } } }) } @@ -65,15 +75,7 @@ fun TitleScreen(navController: NavController, appName: String = ""){ PullToRefreshBox( isRefreshing = isRefreshing, - onRefresh = { - isRefreshing = true - viewModel.loadNotificationTitles() - priorityViewModel.loadNotificationTitles() - coroutineScope.launch { - delay(500) - isRefreshing = false - } - }, + onRefresh = onRefresh, modifier = Modifier.padding(innerPadding) ) { NotificationTitleListView(navController, viewModel, priorityViewModel) diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 8d6a350..0fab5eb 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -40,6 +40,7 @@ NotiManager 모든 중요 알림을 확인했어요. %1$s개의 읽지 않은 알림이 있어요. + 새로운 알림이 있어요. 방금 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d90d68f..d8c95f2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -40,6 +40,7 @@ NotiManager You have checked all important notifications. You have %1$s unread notifications. + You have a new notification. Just now