Skip to content
20 changes: 20 additions & 0 deletions assets/l10n/app_en.arb
Original file line number Diff line number Diff line change
Expand Up @@ -951,6 +951,26 @@
"@pollWidgetOptionsMissing": {
"description": "Text to display for a poll when it has no options"
},
"initialAnchorSettingTitle": "Open message feeds at",
"@initialAnchorSettingTitle": {
"description": "Title of setting controlling initial anchor of message list."
},
"initialAnchorSettingDescription": "You can choose whether message feeds open at your first unread message or at the newest messages.",
"@initialAnchorSettingDescription": {
"description": "Description of setting controlling initial anchor of message list."
},
"initialAnchorSettingFirstUnreadAlways": "First unread message",
"@initialAnchorSettingFirstUnreadAlways": {
"description": "Label for a value of setting controlling initial anchor of message list."
},
"initialAnchorSettingFirstUnreadConversations": "First unread message in single conversations, newest message elsewhere",
"@initialAnchorSettingFirstUnreadConversations": {
"description": "Label for a value of setting controlling initial anchor of message list."
},
"initialAnchorSettingNewestAlways": "Newest message",
"@initialAnchorSettingNewestAlways": {
"description": "Label for a value of setting controlling initial anchor of message list."
},
"experimentalFeatureSettingsPageTitle": "Experimental features",
"@experimentalFeatureSettingsPageTitle": {
"description": "Title of settings page for experimental, in-development features"
Expand Down
30 changes: 30 additions & 0 deletions lib/generated/l10n/zulip_localizations.dart
Original file line number Diff line number Diff line change
Expand Up @@ -1415,6 +1415,36 @@ abstract class ZulipLocalizations {
/// **'This poll has no options yet.'**
String get pollWidgetOptionsMissing;

/// Title of setting controlling initial anchor of message list.
///
/// In en, this message translates to:
/// **'Open message feeds at'**
String get initialAnchorSettingTitle;

/// Description of setting controlling initial anchor of message list.
///
/// In en, this message translates to:
/// **'You can choose whether message feeds open at your first unread message or at the newest messages.'**
String get initialAnchorSettingDescription;

/// Label for a value of setting controlling initial anchor of message list.
///
/// In en, this message translates to:
/// **'First unread message'**
String get initialAnchorSettingFirstUnreadAlways;

/// Label for a value of setting controlling initial anchor of message list.
///
/// In en, this message translates to:
/// **'First unread message in single conversations, newest message elsewhere'**
String get initialAnchorSettingFirstUnreadConversations;

/// Label for a value of setting controlling initial anchor of message list.
///
/// In en, this message translates to:
/// **'Newest message'**
String get initialAnchorSettingNewestAlways;

/// Title of settings page for experimental, in-development features
///
/// In en, this message translates to:
Expand Down
17 changes: 17 additions & 0 deletions lib/generated/l10n/zulip_localizations_ar.dart
Original file line number Diff line number Diff line change
Expand Up @@ -773,6 +773,23 @@ class ZulipLocalizationsAr extends ZulipLocalizations {
@override
String get pollWidgetOptionsMissing => 'This poll has no options yet.';

@override
String get initialAnchorSettingTitle => 'Open message feeds at';

@override
String get initialAnchorSettingDescription =>
'You can choose whether message feeds open at your first unread message or at the newest messages.';

@override
String get initialAnchorSettingFirstUnreadAlways => 'First unread message';

@override
String get initialAnchorSettingFirstUnreadConversations =>
'First unread message in single conversations, newest message elsewhere';

@override
String get initialAnchorSettingNewestAlways => 'Newest message';

@override
String get experimentalFeatureSettingsPageTitle => 'Experimental features';

Expand Down
17 changes: 17 additions & 0 deletions lib/generated/l10n/zulip_localizations_de.dart
Original file line number Diff line number Diff line change
Expand Up @@ -773,6 +773,23 @@ class ZulipLocalizationsDe extends ZulipLocalizations {
@override
String get pollWidgetOptionsMissing => 'This poll has no options yet.';

@override
String get initialAnchorSettingTitle => 'Open message feeds at';

@override
String get initialAnchorSettingDescription =>
'You can choose whether message feeds open at your first unread message or at the newest messages.';

@override
String get initialAnchorSettingFirstUnreadAlways => 'First unread message';

@override
String get initialAnchorSettingFirstUnreadConversations =>
'First unread message in single conversations, newest message elsewhere';

@override
String get initialAnchorSettingNewestAlways => 'Newest message';

@override
String get experimentalFeatureSettingsPageTitle => 'Experimental features';

Expand Down
17 changes: 17 additions & 0 deletions lib/generated/l10n/zulip_localizations_en.dart
Original file line number Diff line number Diff line change
Expand Up @@ -773,6 +773,23 @@ class ZulipLocalizationsEn extends ZulipLocalizations {
@override
String get pollWidgetOptionsMissing => 'This poll has no options yet.';

@override
String get initialAnchorSettingTitle => 'Open message feeds at';

@override
String get initialAnchorSettingDescription =>
'You can choose whether message feeds open at your first unread message or at the newest messages.';

@override
String get initialAnchorSettingFirstUnreadAlways => 'First unread message';

@override
String get initialAnchorSettingFirstUnreadConversations =>
'First unread message in single conversations, newest message elsewhere';

@override
String get initialAnchorSettingNewestAlways => 'Newest message';

@override
String get experimentalFeatureSettingsPageTitle => 'Experimental features';

Expand Down
17 changes: 17 additions & 0 deletions lib/generated/l10n/zulip_localizations_ja.dart
Original file line number Diff line number Diff line change
Expand Up @@ -773,6 +773,23 @@ class ZulipLocalizationsJa extends ZulipLocalizations {
@override
String get pollWidgetOptionsMissing => 'This poll has no options yet.';

@override
String get initialAnchorSettingTitle => 'Open message feeds at';

@override
String get initialAnchorSettingDescription =>
'You can choose whether message feeds open at your first unread message or at the newest messages.';

@override
String get initialAnchorSettingFirstUnreadAlways => 'First unread message';

@override
String get initialAnchorSettingFirstUnreadConversations =>
'First unread message in single conversations, newest message elsewhere';

@override
String get initialAnchorSettingNewestAlways => 'Newest message';

@override
String get experimentalFeatureSettingsPageTitle => 'Experimental features';

Expand Down
17 changes: 17 additions & 0 deletions lib/generated/l10n/zulip_localizations_nb.dart
Original file line number Diff line number Diff line change
Expand Up @@ -773,6 +773,23 @@ class ZulipLocalizationsNb extends ZulipLocalizations {
@override
String get pollWidgetOptionsMissing => 'This poll has no options yet.';

@override
String get initialAnchorSettingTitle => 'Open message feeds at';

@override
String get initialAnchorSettingDescription =>
'You can choose whether message feeds open at your first unread message or at the newest messages.';

@override
String get initialAnchorSettingFirstUnreadAlways => 'First unread message';

@override
String get initialAnchorSettingFirstUnreadConversations =>
'First unread message in single conversations, newest message elsewhere';

@override
String get initialAnchorSettingNewestAlways => 'Newest message';

@override
String get experimentalFeatureSettingsPageTitle => 'Experimental features';

Expand Down
17 changes: 17 additions & 0 deletions lib/generated/l10n/zulip_localizations_pl.dart
Original file line number Diff line number Diff line change
Expand Up @@ -784,6 +784,23 @@ class ZulipLocalizationsPl extends ZulipLocalizations {
@override
String get pollWidgetOptionsMissing => 'Ta sonda nie ma opcji do wyboru.';

@override
String get initialAnchorSettingTitle => 'Open message feeds at';

@override
String get initialAnchorSettingDescription =>
'You can choose whether message feeds open at your first unread message or at the newest messages.';

@override
String get initialAnchorSettingFirstUnreadAlways => 'First unread message';

@override
String get initialAnchorSettingFirstUnreadConversations =>
'First unread message in single conversations, newest message elsewhere';

@override
String get initialAnchorSettingNewestAlways => 'Newest message';

@override
String get experimentalFeatureSettingsPageTitle => 'Funkcje eksperymentalne';

Expand Down
17 changes: 17 additions & 0 deletions lib/generated/l10n/zulip_localizations_ru.dart
Original file line number Diff line number Diff line change
Expand Up @@ -787,6 +787,23 @@ class ZulipLocalizationsRu extends ZulipLocalizations {
@override
String get pollWidgetOptionsMissing => 'В опросе пока нет вариантов ответа.';

@override
String get initialAnchorSettingTitle => 'Open message feeds at';

@override
String get initialAnchorSettingDescription =>
'You can choose whether message feeds open at your first unread message or at the newest messages.';

@override
String get initialAnchorSettingFirstUnreadAlways => 'First unread message';

@override
String get initialAnchorSettingFirstUnreadConversations =>
'First unread message in single conversations, newest message elsewhere';

@override
String get initialAnchorSettingNewestAlways => 'Newest message';

@override
String get experimentalFeatureSettingsPageTitle =>
'Экспериментальные функции';
Expand Down
17 changes: 17 additions & 0 deletions lib/generated/l10n/zulip_localizations_sk.dart
Original file line number Diff line number Diff line change
Expand Up @@ -775,6 +775,23 @@ class ZulipLocalizationsSk extends ZulipLocalizations {
@override
String get pollWidgetOptionsMissing => 'This poll has no options yet.';

@override
String get initialAnchorSettingTitle => 'Open message feeds at';

@override
String get initialAnchorSettingDescription =>
'You can choose whether message feeds open at your first unread message or at the newest messages.';

@override
String get initialAnchorSettingFirstUnreadAlways => 'First unread message';

@override
String get initialAnchorSettingFirstUnreadConversations =>
'First unread message in single conversations, newest message elsewhere';

@override
String get initialAnchorSettingNewestAlways => 'Newest message';

@override
String get experimentalFeatureSettingsPageTitle => 'Experimental features';

Expand Down
17 changes: 17 additions & 0 deletions lib/generated/l10n/zulip_localizations_uk.dart
Original file line number Diff line number Diff line change
Expand Up @@ -787,6 +787,23 @@ class ZulipLocalizationsUk extends ZulipLocalizations {
String get pollWidgetOptionsMissing =>
'У цьому опитуванні ще немає варіантів.';

@override
String get initialAnchorSettingTitle => 'Open message feeds at';

@override
String get initialAnchorSettingDescription =>
'You can choose whether message feeds open at your first unread message or at the newest messages.';

@override
String get initialAnchorSettingFirstUnreadAlways => 'First unread message';

@override
String get initialAnchorSettingFirstUnreadConversations =>
'First unread message in single conversations, newest message elsewhere';

@override
String get initialAnchorSettingNewestAlways => 'Newest message';

@override
String get experimentalFeatureSettingsPageTitle => 'Експериментальні функції';

Expand Down
17 changes: 17 additions & 0 deletions lib/generated/l10n/zulip_localizations_zh.dart
Original file line number Diff line number Diff line change
Expand Up @@ -773,6 +773,23 @@ class ZulipLocalizationsZh extends ZulipLocalizations {
@override
String get pollWidgetOptionsMissing => 'This poll has no options yet.';

@override
String get initialAnchorSettingTitle => 'Open message feeds at';

@override
String get initialAnchorSettingDescription =>
'You can choose whether message feeds open at your first unread message or at the newest messages.';

@override
String get initialAnchorSettingFirstUnreadAlways => 'First unread message';

@override
String get initialAnchorSettingFirstUnreadConversations =>
'First unread message in single conversations, newest message elsewhere';

@override
String get initialAnchorSettingNewestAlways => 'Newest message';

@override
String get experimentalFeatureSettingsPageTitle => 'Experimental features';

Expand Down
9 changes: 8 additions & 1 deletion lib/model/database.dart
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@ class GlobalSettings extends Table {
Column<String> get browserPreference => textEnum<BrowserPreference>()
.nullable()();

Column<String> get visitFirstUnread => textEnum<VisitFirstUnreadSetting>()
.nullable()();

// If adding a new column to this table, consider whether [BoolGlobalSettings]
// can do the job instead (by adding a value to the [BoolGlobalSetting] enum).
// That way is more convenient, when it works, because
Expand Down Expand Up @@ -119,7 +122,7 @@ class AppDatabase extends _$AppDatabase {
// information on using the build_runner.
// * Write a migration in `_migrationSteps` below.
// * Write tests.
static const int latestSchemaVersion = 6; // See note.
static const int latestSchemaVersion = 7; // See note.

@override
int get schemaVersion => latestSchemaVersion;
Expand Down Expand Up @@ -174,6 +177,10 @@ class AppDatabase extends _$AppDatabase {
from5To6: (m, schema) async {
await m.createTable(schema.boolGlobalSettings);
},
from6To7: (m, schema) async {
await m.addColumn(schema.globalSettings,
schema.globalSettings.visitFirstUnread);
},
);

Future<void> _createLatestSchema(Migrator m) async {
Expand Down
Loading