Added mark as unread by default option

This commit is contained in:
Juan Gilsanz Polo
2025-04-03 22:24:59 +02:00
parent 09fda86e61
commit 7982644c23
9 changed files with 1604 additions and 2701 deletions

View File

@@ -7,4 +7,5 @@ class SharedPreferencesKeys {
static const showFavicon = "showFavicon"; static const showFavicon = "showFavicon";
static const openLinksBrowser = "openLinksBrowser"; static const openLinksBrowser = "openLinksBrowser";
static const defaultTags = "defaultTags"; static const defaultTags = "defaultTags";
static const markAsUnreadDefault = "markAsUnreadDefault";
} }

File diff suppressed because it is too large Load Diff

View File

@@ -214,7 +214,10 @@
"addTag": "Add tag", "addTag": "Add tag",
"removeThisTag": "Remove this tag", "removeThisTag": "Remove this tag",
"noDefaultTags": "There are no default tags" "noDefaultTags": "There are no default tags"
} },
"others": "Others",
"setMarkAsUnreadDefault": "Set mark as unread by default",
"setMarkAsUnreadDefaultDescription": "Set the mark as unread option by default when creating a new bookmark."
} }
}, },
"webview": { "webview": {

View File

@@ -214,7 +214,10 @@
"addTag": "Añadir etiqueta", "addTag": "Añadir etiqueta",
"removeThisTag": "Eliminar esta etiqueta", "removeThisTag": "Eliminar esta etiqueta",
"noDefaultTags": "No hay etiquetas por defecto" "noDefaultTags": "No hay etiquetas por defecto"
} },
"others": "Otros",
"setMarkAsUnreadDefault": "Marcar como no leído por defecto",
"setMarkAsUnreadDefaultDescription": "Habilitar por defecto la opción de marcar como leído al crear un marcador."
} }
}, },
"webview": { "webview": {

View File

@@ -214,7 +214,10 @@
"addTag": "AddTag", "addTag": "AddTag",
"removeThisTag": "Remove this tag", "removeThisTag": "Remove this tag",
"noDefaultTags": "There are no default tags" "noDefaultTags": "There are no default tags"
} },
"others": "Others",
"setMarkAsUnreadDefault": "Set mark as unread by default",
"setMarkAsUnreadDefaultDescription": "Set the mark as unread option by default when creating a new bookmark."
} }
}, },
"webview": { "webview": {

View File

@@ -8,6 +8,7 @@ class AppStatusModel {
OpenLinksBrowser openLinksBrowser; OpenLinksBrowser openLinksBrowser;
bool showFavicon; bool showFavicon;
List<String> defaultTags; List<String> defaultTags;
bool markAsUnreadDefault;
AppStatusModel({ AppStatusModel({
this.selectedTheme = SelectedTheme.system, this.selectedTheme = SelectedTheme.system,
@@ -17,5 +18,6 @@ class AppStatusModel {
this.openLinksBrowser = OpenLinksBrowser.integrated, this.openLinksBrowser = OpenLinksBrowser.integrated,
this.showFavicon = true, this.showFavicon = true,
required this.defaultTags, required this.defaultTags,
this.markAsUnreadDefault = false,
}); });
} }

View File

@@ -23,6 +23,7 @@ class AppStatus extends _$AppStatus {
OpenLinksBrowser.integrated, OpenLinksBrowser.integrated,
showFavicon: sharedPreferences.getBool(SharedPreferencesKeys.showFavicon) ?? true, showFavicon: sharedPreferences.getBool(SharedPreferencesKeys.showFavicon) ?? true,
defaultTags: sharedPreferences.getStringList(SharedPreferencesKeys.defaultTags) ?? [], defaultTags: sharedPreferences.getStringList(SharedPreferencesKeys.defaultTags) ?? [],
markAsUnreadDefault: sharedPreferences.getBool(SharedPreferencesKeys.markAsUnreadDefault) ?? false,
); );
} }
@@ -74,6 +75,12 @@ class AppStatus extends _$AppStatus {
ref.read(sharedPreferencesProvider).setStringList(SharedPreferencesKeys.defaultTags, newTags); ref.read(sharedPreferencesProvider).setStringList(SharedPreferencesKeys.defaultTags, newTags);
ref.notifyListeners(); ref.notifyListeners();
} }
void setMarkAsUnreadDefault(bool value) {
state.markAsUnreadDefault = value;
ref.read(sharedPreferencesProvider).setBool(SharedPreferencesKeys.markAsUnreadDefault, value);
ref.notifyListeners();
}
} }
@riverpod @riverpod

View File

@@ -4,6 +4,7 @@ import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:linkdy/screens/bookmarks/provider/bookmarks.provider.dart'; import 'package:linkdy/screens/bookmarks/provider/bookmarks.provider.dart';
import 'package:linkdy/screens/bookmarks/model/bookmark_form.model.dart'; import 'package:linkdy/screens/bookmarks/model/bookmark_form.model.dart';
import 'package:linkdy/providers/app_status.provider.dart';
import 'package:linkdy/constants/global_keys.dart'; import 'package:linkdy/constants/global_keys.dart';
import 'package:linkdy/models/data/bookmarks.dart'; import 'package:linkdy/models/data/bookmarks.dart';
import 'package:linkdy/utils/snackbar.dart'; import 'package:linkdy/utils/snackbar.dart';
@@ -43,6 +44,7 @@ class BookmarkForm extends _$BookmarkForm {
tagsController: TextEditingController(), tagsController: TextEditingController(),
tags: [], tags: [],
notesController: TextEditingController(), notesController: TextEditingController(),
markAsUnread: ref.read(appStatusProvider).markAsUnreadDefault,
); );
} }
@@ -55,7 +57,7 @@ class BookmarkForm extends _$BookmarkForm {
state.descriptionController.text = bookmark.description ?? ''; state.descriptionController.text = bookmark.description ?? '';
state.tags = bookmark.tagNames ?? []; state.tags = bookmark.tagNames ?? [];
state.notesController.text = bookmark.notes ?? ''; state.notesController.text = bookmark.notes ?? '';
state.markAsUnread = bookmark.unread ?? false; state.markAsUnread = bookmark.unread ?? ref.read(appStatusProvider).markAsUnreadDefault;
state.share = bookmark.shared ?? false; state.share = bookmark.shared ?? false;
} }
@@ -97,7 +99,7 @@ class BookmarkForm extends _$BookmarkForm {
state.descriptionController.text = result.content?.metadata?.description ?? ""; state.descriptionController.text = result.content?.metadata?.description ?? "";
state.tags = result.content?.bookmark?.tagNames ?? []; state.tags = result.content?.bookmark?.tagNames ?? [];
state.notesController.text = result.content?.bookmark?.notes ?? ""; state.notesController.text = result.content?.bookmark?.notes ?? "";
state.markAsUnread = result.content?.bookmark?.unread ?? false; state.markAsUnread = result.content?.bookmark?.unread ?? ref.read(appStatusProvider).markAsUnreadDefault;
state.share = result.content?.bookmark?.shared ?? false; state.share = result.content?.bookmark?.shared ?? false;
state.bookmarkExists = true; state.bookmarkExists = true;
} else { } else {

View File

@@ -77,6 +77,13 @@ class GeneralSettings extends ConsumerWidget {
subtitle: Text(t.settings.generalSettings.defaultTags.defaultTagsDescription), subtitle: Text(t.settings.generalSettings.defaultTags.defaultTagsDescription),
onTap: () => ref.watch(routerProvider).push(RoutesPaths.defaultTags), onTap: () => ref.watch(routerProvider).push(RoutesPaths.defaultTags),
), ),
SectionLabel(label: t.settings.generalSettings.others),
SwitchListTile(
title: Text(t.settings.generalSettings.setMarkAsUnreadDefault),
subtitle: Text(t.settings.generalSettings.setMarkAsUnreadDefaultDescription),
value: ref.watch(appStatusProvider).markAsUnreadDefault,
onChanged: ref.read(appStatusProvider.notifier).setMarkAsUnreadDefault,
),
const Padding( const Padding(
padding: EdgeInsets.symmetric(vertical: 16), padding: EdgeInsets.symmetric(vertical: 16),
child: Divider(), child: Divider(),