Display banner when creating a new local list

pull/3782/merge
Alex Baker 4 days ago
parent 55479757aa
commit 6053aeeabd

@ -74,6 +74,7 @@ class Debug : InjectingPreferenceFragment() {
preferences.warnGoogleTasks = true
preferences.warnQuietHoursDisabled = true
preferences.setBoolean(R.string.p_just_updated, true)
preferences.setBoolean(R.string.p_local_list_banner_dismissed, false)
true
}
findPreference(R.string.debug_create_tasks).setOnPreferenceClickListener {

@ -28,6 +28,7 @@ import androidx.compose.material3.adaptive.layout.calculatePaneScaffoldDirective
import androidx.compose.material3.adaptive.navigation.rememberListDetailPaneScaffoldNavigator
import androidx.compose.material3.rememberDrawerState
import androidx.compose.runtime.LaunchedEffect
import androidx.lifecycle.compose.LifecycleResumeEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.rememberCoroutineScope
@ -191,6 +192,14 @@ class MainActivity : AppCompatActivity() {
isReady = hasAccount != null
}
LifecycleResumeEffect(Unit) {
if (intent.getBooleanExtra(OPEN_ADD_ACCOUNT, false)) {
intent.removeExtra(OPEN_ADD_ACCOUNT)
navController.navigate(AddAccountDestination)
}
onPauseOrDispose {}
}
NavHost(
navController = navController,
startDestination = HomeDestination,
@ -483,6 +492,7 @@ class MainActivity : AppCompatActivity() {
const val OPEN_TASK = "open_new_task" // $NON-NLS-1$
const val REMOVE_TASK = "remove_task"
const val FINISH_AFFINITY = "finish_affinity"
const val OPEN_ADD_ACCOUNT = "open_add_account"
val Intent.getFilter: Filter?
get() = if (isFromHistory) {

@ -109,6 +109,7 @@ abstract class BaseListSettingsActivity : AppCompatActivity() {
if (!isNew) DeleteButton(toolbarTitle ?: "") { delete() }
},
fab: @Composable () -> Unit = {},
headerContent: @Composable ColumnScope.() -> Unit = {},
extensionContent: @Composable ColumnScope.() -> Unit = {},
) {
val viewState = baseViewModel.viewState.collectAsStateWithLifecycle().value
@ -141,6 +142,7 @@ abstract class BaseListSettingsActivity : AppCompatActivity() {
pickIcon = { showIconPicker() },
addShortcutToHome = { createShortcut(color) },
addWidgetToHome = { createWidget() },
headerContent = headerContent,
extensionContent = extensionContent,
purchase = {
startActivity(

@ -209,10 +209,12 @@ abstract class BaseCaldavCalendarSettingsActivity : BaseListSettingsActivity() {
fun BaseCaldavSettingsContent (
optionButton: @Composable () -> Unit = { if (!isNew) DeleteButton(caldavCalendar?.name ?: "") { delete() } },
fab: @Composable () -> Unit = {},
headerContent: @Composable ColumnScope.() -> Unit = {},
extensionContent: @Composable ColumnScope.() -> Unit = {},
) {
BaseSettingsContent (
optionButton = optionButton,
headerContent = headerContent,
extensionContent = extensionContent,
fab = fab,
)

@ -1,29 +1,69 @@
package org.tasks.caldav
import android.content.Intent
import android.os.Bundle
import androidx.activity.compose.setContent
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.res.stringResource
import com.todoroo.astrid.activity.MainActivity
import dagger.hilt.android.AndroidEntryPoint
import org.tasks.R
import org.tasks.compose.DeleteButton
import org.tasks.compose.components.AnimatedBanner
import org.tasks.data.entity.CaldavAccount
import org.tasks.data.entity.CaldavCalendar
import org.tasks.preferences.Preferences
import org.tasks.themes.TasksTheme
import javax.inject.Inject
@AndroidEntryPoint
class LocalListSettingsActivity : BaseCaldavCalendarSettingsActivity() {
@Inject lateinit var preferences: Preferences
private val showLocalListBanner: Boolean
get() = isNew && !preferences.getBoolean(R.string.p_local_list_banner_dismissed, false)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
TasksTheme {
var bannerVisible by rememberSaveable { mutableStateOf(showLocalListBanner) }
BaseCaldavSettingsContent (
optionButton = { if (!isNew) DeleteButton(caldavCalendar?.name ?: "") { delete() } }
optionButton = { if (!isNew) DeleteButton(caldavCalendar?.name ?: "") { delete() } },
headerContent = {
AnimatedBanner(
visible = bannerVisible,
title = stringResource(R.string.local_list_title),
body = stringResource(R.string.local_list_description),
dismissText = stringResource(R.string.dismiss),
onDismiss = {
bannerVisible = false
preferences.setBoolean(R.string.p_local_list_banner_dismissed, true)
},
action = stringResource(R.string.add_account),
onAction = {
startActivity(
Intent(this@LocalListSettingsActivity, MainActivity::class.java)
.putExtra(MainActivity.OPEN_ADD_ACCOUNT, true)
)
finish()
},
)
}
)
}
}
}
override suspend fun createCalendar(caldavAccount: CaldavAccount, name: String, color: Int) =
createSuccessful(null)
override suspend fun createCalendar(caldavAccount: CaldavAccount, name: String, color: Int) {
preferences.setBoolean(R.string.p_local_list_banner_dismissed, true)
createSuccessful(null)
}
override suspend fun updateNameAndColor(
account: CaldavAccount, calendar: CaldavCalendar, name: String, color: Int) =

@ -22,9 +22,11 @@ fun ColumnScope.ListSettingsContent(
pickIcon: () -> Unit,
addShortcutToHome: () -> Unit,
addWidgetToHome: () -> Unit,
headerContent: @Composable ColumnScope.() -> Unit = {},
extensionContent: @Composable ColumnScope.() -> Unit,
purchase: () -> Unit,
) {
headerContent()
TitleInput(
text = text,
error = error,

@ -405,6 +405,7 @@
<string name="p_warn_quiet_hours_enabled">warn_quiet_hours_enabled</string>
<string name="p_warn_microsoft">warn_microsoft</string>
<string name="p_warn_google_tasks">warn_google_Tasks</string>
<string name="p_local_list_banner_dismissed">local_list_banner_dismissed</string>
<string name="event_showed_purchase_dialog">showed_purchase_dialog</string>
<string name="event_purchase_result">billing_flow_result</string>

@ -261,6 +261,8 @@ File %1$s contained %2$s.\n\n
<string name="repeat_snackbar">%1$s rescheduled for %2$s</string>
<string name="new_tag">Create new tag</string>
<string name="new_list">Create new list</string>
<string name="local_list_title">This is a local list</string>
<string name="local_list_description">Tasks in this list are stored only on this device. Connect an account to safeguard your data and access it anywhere.</string>
<string name="delete_tag_confirmation">Delete %s?</string>
<string name="delete_comment">comment</string>
<string name="comment">Comment</string>

Loading…
Cancel
Save