notificationSettings #354
|
@ -29,6 +29,9 @@ class FlwtchWorker(context: Context, parameters: WorkerParameters) :
|
|||
private var notificationID: MutableMap<String, Int> = mutableMapOf()
|
||||
private var notificationIDnext: Int = 1
|
||||
|
||||
private var notificationSimple: String? = null
|
||||
private var notificationConversationInfo: String? = null
|
||||
|
||||
override suspend fun doWork(): Result {
|
||||
val method = inputData.getString(KEY_METHOD)
|
||||
?: return Result.failure()
|
||||
|
@ -67,14 +70,8 @@ class FlwtchWorker(context: Context, parameters: WorkerParameters) :
|
|||
val data = JSONObject(evt.Data)
|
||||
val handle = if (evt.EventType == "NewMessageFromPeer") data.getString("RemotePeer") else data.getString("GroupID");
|
||||
if (data["RemotePeer"] != data["ProfileOnion"]) {
|
||||
|
||||
|
||||
|
||||
val notification = data["notification"]
|
||||
|
||||
|
||||
|
||||
|
||||
if (notification == "SimpleEvent") {
|
||||
val channelId =
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
|
@ -92,7 +89,7 @@ class FlwtchWorker(context: Context, parameters: WorkerParameters) :
|
|||
|
||||
val newNotification = NotificationCompat.Builder(applicationContext, channelId)
|
||||
.setContentTitle("Cwtch")
|
||||
.setContentText("New message")//todo: translate
|
||||
.setContentText(notificationSimple ?: "New Message")
|
||||
.setSmallIcon(R.mipmap.knott_transparent)
|
||||
.setContentIntent(PendingIntent.getActivity(applicationContext, 1, clickIntent, PendingIntent.FLAG_UPDATE_CURRENT))
|
||||
.setAutoCancel(true)
|
||||
|
@ -121,7 +118,7 @@ class FlwtchWorker(context: Context, parameters: WorkerParameters) :
|
|||
|
||||
val newNotification = NotificationCompat.Builder(applicationContext, channelId)
|
||||
.setContentTitle(data.getString("Nick"))
|
||||
.setContentText("New message")//todo: translate
|
||||
.setContentText((notificationConversationInfo ?: "New Message From %1").replace("%1", data.getString("Nick")))
|
||||
.setLargeIcon(BitmapFactory.decodeStream(fh))
|
||||
.setSmallIcon(R.mipmap.knott_transparent)
|
||||
.setContentIntent(PendingIntent.getActivity(applicationContext, 1, clickIntent, PendingIntent.FLAG_UPDATE_CURRENT))
|
||||
|
@ -397,6 +394,11 @@ class FlwtchWorker(context: Context, parameters: WorkerParameters) :
|
|||
val v = (a.get("Val") as? String) ?: ""
|
||||
Cwtch.setServerAttribute(serverOnion, key, v)
|
||||
}
|
||||
"L10nInit" -> {
|
||||
notificationSimple = (a.get("notificationSimple") as? String) ?: "New Message"
|
||||
notificationConversationInfo = (a.get("notificationConversationInfo") as? String)
|
||||
?: "New Message From "
|
||||
}
|
||||
else -> {
|
||||
Log.i("FlwtchWorker", "unknown command: " + method);
|
||||
return Result.failure()
|
||||
|
|
|
@ -105,5 +105,9 @@ abstract class Cwtch {
|
|||
// non-ffi
|
||||
String defaultDownloadPath();
|
||||
|
||||
bool isL10nInit();
|
||||
|
||||
void l10nInit(String notificationSimple, String notificationConversationInfo);
|
||||
|
||||
void dispose();
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@ import 'package:cwtch/models/remoteserver.dart';
|
|||
import 'package:cwtch/models/servers.dart';
|
||||
import 'package:cwtch/notification_manager.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import 'package:cwtch/torstatus.dart';
|
||||
|
@ -28,8 +29,11 @@ class CwtchNotifier {
|
|||
late AppState appState;
|
||||
late ServerListState serverListState;
|
||||
|
||||
String? notificationSimple;
|
||||
String? notificationConversationInfo;
|
||||
|
||||
CwtchNotifier(
|
||||
ProfileListState pcn, Settings settingsCN, ErrorHandler errorCN, TorStatus torStatusCN, NotificationsManager notificationManagerP, AppState appStateCN, ServerListState serverListStateCN) {
|
||||
ProfileListState pcn, Settings settingsCN, ErrorHandler errorCN, TorStatus torStatusCN, NotificationsManager notificationManagerP, AppState appStateCN, ServerListState serverListStateCN) {
|
||||
profileCN = pcn;
|
||||
settings = settingsCN;
|
||||
error = errorCN;
|
||||
|
@ -39,6 +43,11 @@ class CwtchNotifier {
|
|||
serverListState = serverListStateCN;
|
||||
}
|
||||
|
||||
void l10nInit(String notificationSimple, String notificationConversationInfo) {
|
||||
this.notificationSimple = notificationSimple;
|
||||
this.notificationConversationInfo = notificationConversationInfo;
|
||||
}
|
||||
|
||||
void handleMessage(String type, dynamic data) {
|
||||
//EnvironmentConfig.debugLog("NewEvent $type $data");
|
||||
switch (type) {
|
||||
|
@ -160,10 +169,10 @@ class CwtchNotifier {
|
|||
var notification = data["notification"];
|
||||
|
||||
if (notification == "SimpleEvent") {
|
||||
notificationManager.notify(/*TODO l10n */ "New Message");
|
||||
notificationManager.notify(notificationSimple ?? "New Message");
|
||||
} else if (notification == "ContactInfo") {
|
||||
var contact = profileCN.getProfile(data["ProfileOnion"])?.contactList.getContact(identifier);
|
||||
notificationManager.notify(/*TODO l10n */ "New Message from " + (contact?.nickname ?? senderHandle.toString()));
|
||||
notificationManager.notify((notificationConversationInfo ?? "New Message from %1").replaceFirst("%1", (contact?.nickname ?? senderHandle.toString())));
|
||||
}
|
||||
|
||||
profileCN.getProfile(data["ProfileOnion"])?.newMessage(
|
||||
|
@ -237,10 +246,10 @@ class CwtchNotifier {
|
|||
profileCN.getProfile(data["ProfileOnion"])?.newMessage(identifier, idx, timestampSent, senderHandle, senderImage, isAuto, data["Data"], contenthash, selectedProfile, selectedConversation);
|
||||
|
||||
if (notification == "SimpleEvent") {
|
||||
notificationManager.notify(/*TODO l10n */ "New Message");
|
||||
notificationManager.notify(notificationSimple ?? "New Message");
|
||||
} else if (notification == "ContactInfo") {
|
||||
var contact = profileCN.getProfile(data["ProfileOnion"])?.contactList.getContact(identifier);
|
||||
notificationManager.notify(/*TODO l10n */ "New Message from " + (contact?.nickname ?? senderHandle.toString()));
|
||||
notificationManager.notify( (notificationConversationInfo ?? "New Message from %1").replaceFirst("%1", (contact?.nickname ?? senderHandle.toString())));
|
||||
}
|
||||
appState.notifyProfileUnread();
|
||||
}
|
||||
|
|
|
@ -100,6 +100,7 @@ class CwtchFfi implements Cwtch {
|
|||
late CwtchNotifier cwtchNotifier;
|
||||
late Isolate cwtchIsolate;
|
||||
ReceivePort _receivePort = ReceivePort();
|
||||
bool _isL10nInit = false;
|
||||
|
||||
static String getLibraryPath() {
|
||||
if (Platform.isWindows) {
|
||||
|
@ -744,4 +745,15 @@ class CwtchFfi implements Cwtch {
|
|||
malloc.free(utf8newpass);
|
||||
malloc.free(utf8newpasssagain);
|
||||
}
|
||||
|
||||
@override
|
||||
bool isL10nInit() {
|
||||
return _isL10nInit;
|
||||
}
|
||||
|
||||
@override
|
||||
void l10nInit(String notificationSimple, String notificationConversationInfo) {
|
||||
cwtchNotifier.l10nInit(notificationSimple, notificationConversationInfo);
|
||||
_isL10nInit = true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,6 +30,7 @@ class CwtchGomobile implements Cwtch {
|
|||
late Future<dynamic> androidHomeDirectory;
|
||||
String androidHomeDirectoryStr = "";
|
||||
late CwtchNotifier cwtchNotifier;
|
||||
bool _isL10nInit = false;
|
||||
|
||||
CwtchGomobile(CwtchNotifier _cwtchNotifier) {
|
||||
print("gomobile.dart: CwtchGomobile()");
|
||||
|
@ -295,4 +296,16 @@ class CwtchGomobile implements Cwtch {
|
|||
void ChangePassword(String profile, String pass, String newpass, String newpassAgain) {
|
||||
cwtchPlatform.invokeMethod("ChangePassword", {"ProfileOnion": profile, "OldPass": pass, "NewPass": newpass, "NewPassAgain": newpassAgain});
|
||||
}
|
||||
|
||||
@override
|
||||
bool isL10nInit() {
|
||||
return _isL10nInit;
|
||||
}
|
||||
|
||||
@override
|
||||
void l10nInit(String notificationSimple, String notificationConversationInfo) {
|
||||
cwtchNotifier.l10nInit(notificationSimple, notificationConversationInfo);
|
||||
cwtchPlatform.invokeMethod("L10nInit", {"notificationSimple": notificationSimple, "notificationConversationInfo": notificationConversationInfo});
|
||||
_isL10nInit = true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,25 @@
|
|||
{
|
||||
"@@locale": "de",
|
||||
"@@last_modified": "2022-02-07T21:17:01+01:00",
|
||||
"@@last_modified": "2022-02-08T20:13:50+01:00",
|
||||
"newMessageNotificationConversationInfo": "New Message From %1",
|
||||
"newMessageNotificationSimple": "New Message",
|
||||
"notificationContentContactInfo": "Conversation Information",
|
||||
"notificationContentSimpleEvent": "Plain Event",
|
||||
"conversationNotificationPolicySettingDescription": "Control this conversation's notification behaviour",
|
||||
"conversationNotificationPolicySettingLabel": "Conversation Notification Policy",
|
||||
"settingsGroupExperiments": "Experiments",
|
||||
"settingsGroupAppearance": "Appearance",
|
||||
"settingGroupBehaviour": "Behaviour",
|
||||
"notificationContentSettingDescription": "Controls the contents of conversation notifications",
|
||||
"notificationPolicySettingDescription": "Controls the default application notification behaviour",
|
||||
"notificationContentSettingLabel": "Notification Content",
|
||||
"notificationPolicySettingLabel": "Notification Policy",
|
||||
"conversationNotificationPolicyNever": "Never",
|
||||
"conversationNotificationPolicyOptIn": "Opt In",
|
||||
"conversationNotificationPolicyDefault": "Default",
|
||||
"notificationPolicyDefaultAll": "Default All",
|
||||
"notificationPolicyOptIn": "Opt In",
|
||||
"notificationPolicyMute": "Mute",
|
||||
"tooltipSelectACustomProfileImage": "Select a Custom Profile Image",
|
||||
"torSettingsEnabledCacheDescription": "Cache the current downloaded Tor consensus to reuse next time Cwtch is opened. This will allow Tor to start faster. When disabled, Cwtch will purge cached data on start up.",
|
||||
"torSettingsEnableCache": "Cache Tor Consensus",
|
||||
|
|
|
@ -1,6 +1,25 @@
|
|||
{
|
||||
"@@locale": "en",
|
||||
"@@last_modified": "2022-02-07T21:17:01+01:00",
|
||||
"@@last_modified": "2022-02-08T20:13:50+01:00",
|
||||
"newMessageNotificationConversationInfo": "New Message From %1",
|
||||
"newMessageNotificationSimple": "New Message",
|
||||
"notificationContentContactInfo": "Conversation Information",
|
||||
"notificationContentSimpleEvent": "Plain Event",
|
||||
"conversationNotificationPolicySettingDescription": "Control this conversation's notification behaviour",
|
||||
"conversationNotificationPolicySettingLabel": "Conversation Notification Policy",
|
||||
"settingsGroupExperiments": "Experiments",
|
||||
"settingsGroupAppearance": "Appearance",
|
||||
"settingGroupBehaviour": "Behaviour",
|
||||
"notificationContentSettingDescription": "Controls the contents of conversation notifications",
|
||||
"notificationPolicySettingDescription": "Controls the default application notification behaviour",
|
||||
"notificationContentSettingLabel": "Notification Content",
|
||||
"notificationPolicySettingLabel": "Notification Policy",
|
||||
"conversationNotificationPolicyNever": "Never",
|
||||
"conversationNotificationPolicyOptIn": "Opt In",
|
||||
"conversationNotificationPolicyDefault": "Default",
|
||||
"notificationPolicyDefaultAll": "Default All",
|
||||
"notificationPolicyOptIn": "Opt In",
|
||||
"notificationPolicyMute": "Mute",
|
||||
"tooltipSelectACustomProfileImage": "Select a Custom Profile Image",
|
||||
"editProfile": "Edit Profile",
|
||||
"torSettingsEnabledCacheDescription": "Cache the current downloaded Tor consensus to reuse next time Cwtch is opened. This will allow Tor to start faster. When disabled, Cwtch will purge cached data on start up.",
|
||||
|
|
|
@ -1,6 +1,25 @@
|
|||
{
|
||||
"@@locale": "es",
|
||||
"@@last_modified": "2022-02-07T21:17:01+01:00",
|
||||
"@@last_modified": "2022-02-08T20:13:50+01:00",
|
||||
"newMessageNotificationConversationInfo": "New Message From %1",
|
||||
"newMessageNotificationSimple": "New Message",
|
||||
"notificationContentContactInfo": "Conversation Information",
|
||||
"notificationContentSimpleEvent": "Plain Event",
|
||||
"conversationNotificationPolicySettingDescription": "Control this conversation's notification behaviour",
|
||||
"conversationNotificationPolicySettingLabel": "Conversation Notification Policy",
|
||||
"settingsGroupExperiments": "Experiments",
|
||||
"settingsGroupAppearance": "Appearance",
|
||||
"settingGroupBehaviour": "Behaviour",
|
||||
"notificationContentSettingDescription": "Controls the contents of conversation notifications",
|
||||
"notificationPolicySettingDescription": "Controls the default application notification behaviour",
|
||||
"notificationContentSettingLabel": "Notification Content",
|
||||
"notificationPolicySettingLabel": "Notification Policy",
|
||||
"conversationNotificationPolicyNever": "Never",
|
||||
"conversationNotificationPolicyOptIn": "Opt In",
|
||||
"conversationNotificationPolicyDefault": "Default",
|
||||
"notificationPolicyDefaultAll": "Default All",
|
||||
"notificationPolicyOptIn": "Opt In",
|
||||
"notificationPolicyMute": "Mute",
|
||||
"tooltipSelectACustomProfileImage": "Select a Custom Profile Image",
|
||||
"torSettingsEnabledCacheDescription": "Cache the current downloaded Tor consensus to reuse next time Cwtch is opened. This will allow Tor to start faster. When disabled, Cwtch will purge cached data on start up.",
|
||||
"torSettingsEnableCache": "Cache Tor Consensus",
|
||||
|
|
|
@ -1,6 +1,25 @@
|
|||
{
|
||||
"@@locale": "fr",
|
||||
"@@last_modified": "2022-02-07T21:17:01+01:00",
|
||||
"@@last_modified": "2022-02-08T20:13:50+01:00",
|
||||
"newMessageNotificationConversationInfo": "New Message From %1",
|
||||
"newMessageNotificationSimple": "New Message",
|
||||
"notificationContentContactInfo": "Conversation Information",
|
||||
"notificationContentSimpleEvent": "Plain Event",
|
||||
"conversationNotificationPolicySettingDescription": "Control this conversation's notification behaviour",
|
||||
"conversationNotificationPolicySettingLabel": "Conversation Notification Policy",
|
||||
"settingsGroupExperiments": "Experiments",
|
||||
"settingsGroupAppearance": "Appearance",
|
||||
"settingGroupBehaviour": "Behaviour",
|
||||
"notificationContentSettingDescription": "Controls the contents of conversation notifications",
|
||||
"notificationPolicySettingDescription": "Controls the default application notification behaviour",
|
||||
"notificationContentSettingLabel": "Notification Content",
|
||||
"notificationPolicySettingLabel": "Notification Policy",
|
||||
"conversationNotificationPolicyNever": "Never",
|
||||
"conversationNotificationPolicyOptIn": "Opt In",
|
||||
"conversationNotificationPolicyDefault": "Default",
|
||||
"notificationPolicyDefaultAll": "Default All",
|
||||
"notificationPolicyOptIn": "Opt In",
|
||||
"notificationPolicyMute": "Mute",
|
||||
"tooltipSelectACustomProfileImage": "Select a Custom Profile Image",
|
||||
"editProfile": "Modifier le profil",
|
||||
"settingTheme": "Utilisez des thèmes clairs",
|
||||
|
|
|
@ -1,6 +1,25 @@
|
|||
{
|
||||
"@@locale": "it",
|
||||
"@@last_modified": "2022-02-07T21:17:01+01:00",
|
||||
"@@last_modified": "2022-02-08T20:13:50+01:00",
|
||||
"newMessageNotificationConversationInfo": "New Message From %1",
|
||||
"newMessageNotificationSimple": "New Message",
|
||||
"notificationContentContactInfo": "Conversation Information",
|
||||
"notificationContentSimpleEvent": "Plain Event",
|
||||
"conversationNotificationPolicySettingDescription": "Control this conversation's notification behaviour",
|
||||
"conversationNotificationPolicySettingLabel": "Conversation Notification Policy",
|
||||
"settingsGroupExperiments": "Experiments",
|
||||
"settingsGroupAppearance": "Appearance",
|
||||
"settingGroupBehaviour": "Behaviour",
|
||||
"notificationContentSettingDescription": "Controls the contents of conversation notifications",
|
||||
"notificationPolicySettingDescription": "Controls the default application notification behaviour",
|
||||
"notificationContentSettingLabel": "Notification Content",
|
||||
"notificationPolicySettingLabel": "Notification Policy",
|
||||
"conversationNotificationPolicyNever": "Never",
|
||||
"conversationNotificationPolicyOptIn": "Opt In",
|
||||
"conversationNotificationPolicyDefault": "Default",
|
||||
"notificationPolicyDefaultAll": "Default All",
|
||||
"notificationPolicyOptIn": "Opt In",
|
||||
"notificationPolicyMute": "Mute",
|
||||
"tooltipSelectACustomProfileImage": "Select a Custom Profile Image",
|
||||
"torSettingsEnabledCacheDescription": "Cache the current downloaded Tor consensus to reuse next time Cwtch is opened. This will allow Tor to start faster. When disabled, Cwtch will purge cached data on start up.",
|
||||
"torSettingsEnableCache": "Cache Tor Consensus",
|
||||
|
|
|
@ -1,6 +1,25 @@
|
|||
{
|
||||
"@@locale": "pl",
|
||||
"@@last_modified": "2022-02-07T21:17:01+01:00",
|
||||
"@@last_modified": "2022-02-08T20:13:50+01:00",
|
||||
"newMessageNotificationConversationInfo": "New Message From %1",
|
||||
"newMessageNotificationSimple": "New Message",
|
||||
"notificationContentContactInfo": "Conversation Information",
|
||||
"notificationContentSimpleEvent": "Plain Event",
|
||||
"conversationNotificationPolicySettingDescription": "Control this conversation's notification behaviour",
|
||||
"conversationNotificationPolicySettingLabel": "Conversation Notification Policy",
|
||||
"settingsGroupExperiments": "Experiments",
|
||||
"settingsGroupAppearance": "Appearance",
|
||||
"settingGroupBehaviour": "Behaviour",
|
||||
"notificationContentSettingDescription": "Controls the contents of conversation notifications",
|
||||
"notificationPolicySettingDescription": "Controls the default application notification behaviour",
|
||||
"notificationContentSettingLabel": "Notification Content",
|
||||
"notificationPolicySettingLabel": "Notification Policy",
|
||||
"conversationNotificationPolicyNever": "Never",
|
||||
"conversationNotificationPolicyOptIn": "Opt In",
|
||||
"conversationNotificationPolicyDefault": "Default",
|
||||
"notificationPolicyDefaultAll": "Default All",
|
||||
"notificationPolicyOptIn": "Opt In",
|
||||
"notificationPolicyMute": "Mute",
|
||||
"tooltipSelectACustomProfileImage": "Select a Custom Profile Image",
|
||||
"torSettingsEnabledCacheDescription": "Cache the current downloaded Tor consensus to reuse next time Cwtch is opened. This will allow Tor to start faster. When disabled, Cwtch will purge cached data on start up.",
|
||||
"torSettingsEnableCache": "Cache Tor Consensus",
|
||||
|
|
|
@ -1,6 +1,25 @@
|
|||
{
|
||||
"@@locale": "pt",
|
||||
"@@last_modified": "2022-02-07T21:17:01+01:00",
|
||||
"@@last_modified": "2022-02-08T20:13:50+01:00",
|
||||
"newMessageNotificationConversationInfo": "New Message From %1",
|
||||
"newMessageNotificationSimple": "New Message",
|
||||
"notificationContentContactInfo": "Conversation Information",
|
||||
"notificationContentSimpleEvent": "Plain Event",
|
||||
"conversationNotificationPolicySettingDescription": "Control this conversation's notification behaviour",
|
||||
"conversationNotificationPolicySettingLabel": "Conversation Notification Policy",
|
||||
"settingsGroupExperiments": "Experiments",
|
||||
"settingsGroupAppearance": "Appearance",
|
||||
"settingGroupBehaviour": "Behaviour",
|
||||
"notificationContentSettingDescription": "Controls the contents of conversation notifications",
|
||||
"notificationPolicySettingDescription": "Controls the default application notification behaviour",
|
||||
"notificationContentSettingLabel": "Notification Content",
|
||||
"notificationPolicySettingLabel": "Notification Policy",
|
||||
"conversationNotificationPolicyNever": "Never",
|
||||
"conversationNotificationPolicyOptIn": "Opt In",
|
||||
"conversationNotificationPolicyDefault": "Default",
|
||||
"notificationPolicyDefaultAll": "Default All",
|
||||
"notificationPolicyOptIn": "Opt In",
|
||||
"notificationPolicyMute": "Mute",
|
||||
"tooltipSelectACustomProfileImage": "Select a Custom Profile Image",
|
||||
"torSettingsEnabledCacheDescription": "Cache the current downloaded Tor consensus to reuse next time Cwtch is opened. This will allow Tor to start faster. When disabled, Cwtch will purge cached data on start up.",
|
||||
"torSettingsEnableCache": "Cache Tor Consensus",
|
||||
|
|
|
@ -1,6 +1,25 @@
|
|||
{
|
||||
"@@locale": "ru",
|
||||
"@@last_modified": "2022-02-07T21:17:01+01:00",
|
||||
"@@last_modified": "2022-02-08T20:13:50+01:00",
|
||||
"newMessageNotificationConversationInfo": "New Message From %1",
|
||||
"newMessageNotificationSimple": "New Message",
|
||||
"notificationContentContactInfo": "Conversation Information",
|
||||
"notificationContentSimpleEvent": "Plain Event",
|
||||
"conversationNotificationPolicySettingDescription": "Control this conversation's notification behaviour",
|
||||
"conversationNotificationPolicySettingLabel": "Conversation Notification Policy",
|
||||
"settingsGroupExperiments": "Experiments",
|
||||
"settingsGroupAppearance": "Appearance",
|
||||
"settingGroupBehaviour": "Behaviour",
|
||||
"notificationContentSettingDescription": "Controls the contents of conversation notifications",
|
||||
"notificationPolicySettingDescription": "Controls the default application notification behaviour",
|
||||
"notificationContentSettingLabel": "Notification Content",
|
||||
"notificationPolicySettingLabel": "Notification Policy",
|
||||
"conversationNotificationPolicyNever": "Never",
|
||||
"conversationNotificationPolicyOptIn": "Opt In",
|
||||
"conversationNotificationPolicyDefault": "Default",
|
||||
"notificationPolicyDefaultAll": "Default All",
|
||||
"notificationPolicyOptIn": "Opt In",
|
||||
"notificationPolicyMute": "Mute",
|
||||
"tooltipSelectACustomProfileImage": "Select a Custom Profile Image",
|
||||
"torSettingsEnabledCacheDescription": "Cache the current downloaded Tor consensus to reuse next time Cwtch is opened. This will allow Tor to start faster. When disabled, Cwtch will purge cached data on start up.",
|
||||
"torSettingsEnableCache": "Cache Tor Consensus",
|
||||
|
|
|
@ -37,7 +37,6 @@ Future<void> main() async {
|
|||
WidgetsFlutterBinding.ensureInitialized();
|
||||
print("runApp()");
|
||||
runApp(Flwtch());
|
||||
sleep(Duration(seconds: 1));
|
||||
}
|
||||
|
||||
class Flwtch extends StatefulWidget {
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
import 'package:cwtch/widgets/messagerow.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||
|
||||
|
||||
import 'message.dart';
|
||||
import 'messagecache.dart';
|
||||
|
@ -11,14 +13,14 @@ enum ConversationNotificationPolicy {
|
|||
}
|
||||
|
||||
extension Nameable on ConversationNotificationPolicy {
|
||||
String get toName {
|
||||
String toName(BuildContext context) {
|
||||
switch (this) {
|
||||
case ConversationNotificationPolicy.Default:
|
||||
return "Default";
|
||||
return AppLocalizations.of(context)!.conversationNotificationPolicyDefault;
|
||||
case ConversationNotificationPolicy.OptIn:
|
||||
return "Opt In";
|
||||
return AppLocalizations.of(context)!.conversationNotificationPolicyOptIn;
|
||||
case ConversationNotificationPolicy.Never:
|
||||
return "Never";
|
||||
return AppLocalizations.of(context)!.conversationNotificationPolicyNever;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -296,16 +296,16 @@ class Settings extends ChangeNotifier {
|
|||
|
||||
static String notificationPolicyToString(NotificationPolicy np, BuildContext context) {
|
||||
switch (np) {
|
||||
case NotificationPolicy.Mute: return "Mute";
|
||||
case NotificationPolicy.OptIn: return "OptIn";
|
||||
case NotificationPolicy.DefaultAll: return "DefaultAll";
|
||||
case NotificationPolicy.Mute: return AppLocalizations.of(context)!.notificationPolicyMute;
|
||||
case NotificationPolicy.OptIn: return AppLocalizations.of(context)!.notificationPolicyOptIn;
|
||||
case NotificationPolicy.DefaultAll: return AppLocalizations.of(context)!.notificationPolicyDefaultAll;
|
||||
}
|
||||
}
|
||||
|
||||
static String notificationContentToString(NotificationContent nc, BuildContext context) {
|
||||
switch (nc) {
|
||||
case NotificationContent.SimpleEvent: return "SimpleEvent";
|
||||
case NotificationContent.ContactInfo: return "ContactInfo";
|
||||
case NotificationContent.SimpleEvent: return AppLocalizations.of(context)!.notificationContentSimpleEvent;
|
||||
case NotificationContent.ContactInfo: return AppLocalizations.of(context)!.notificationContentContactInfo;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -59,7 +59,7 @@ class _GlobalSettingsViewState extends State<GlobalSettingsView> {
|
|||
minHeight: viewportConstraints.maxHeight,
|
||||
),
|
||||
child: Column(children: [
|
||||
Row(mainAxisAlignment: MainAxisAlignment.center, children: [Text("Apperance", style: TextStyle(fontWeight: FontWeight.bold))]),
|
||||
Row(mainAxisAlignment: MainAxisAlignment.center, children: [Text(AppLocalizations.of(context)!.settingsGroupAppearance, style: TextStyle(fontWeight: FontWeight.bold))]),
|
||||
ListTile(
|
||||
title: Text(AppLocalizations.of(context)!.settingLanguage, style: TextStyle(color: settings.current().mainTextColor)),
|
||||
leading: Icon(CwtchIcons.change_language, color: settings.current().mainTextColor),
|
||||
|
@ -168,9 +168,10 @@ class _GlobalSettingsViewState extends State<GlobalSettingsView> {
|
|||
SizedBox(
|
||||
height: 40,
|
||||
),
|
||||
Row(mainAxisAlignment: MainAxisAlignment.center, children: [Text("Behaviour", style: TextStyle(fontWeight: FontWeight.bold))]),
|
||||
Row(mainAxisAlignment: MainAxisAlignment.center, children: [Text(AppLocalizations.of(context)!.settingGroupBehaviour, style: TextStyle(fontWeight: FontWeight.bold))]),
|
||||
ListTile(
|
||||
title: Text(/*AppLocalizations.of(context)!.themeColorLabel*/ "Notification Policy"),
|
||||
title: Text(AppLocalizations.of(context)!.notificationPolicySettingLabel),
|
||||
subtitle: Text(AppLocalizations.of(context)!.notificationPolicySettingDescription),
|
||||
trailing: DropdownButton(
|
||||
value: settings.notificationPolicy,
|
||||
onChanged: (NotificationPolicy? newValue) {
|
||||
|
@ -189,7 +190,8 @@ class _GlobalSettingsViewState extends State<GlobalSettingsView> {
|
|||
leading: Icon(CwtchIcons.chat_bubble_empty_24px, color: settings.current().mainTextColor),
|
||||
),
|
||||
ListTile(
|
||||
title: Text(/*AppLocalizations.of(context)!.themeColorLabel*/ "Notification Content"),
|
||||
title: Text(AppLocalizations.of(context)!.notificationContentSettingLabel),
|
||||
subtitle: Text(AppLocalizations.of(context)!.notificationContentSettingDescription),
|
||||
trailing: DropdownButton(
|
||||
value: settings.notificationContent,
|
||||
onChanged: (NotificationContent? newValue) {
|
||||
|
@ -228,7 +230,7 @@ class _GlobalSettingsViewState extends State<GlobalSettingsView> {
|
|||
SizedBox(
|
||||
height: 40,
|
||||
),
|
||||
Row(mainAxisAlignment: MainAxisAlignment.center, children: [Text("Experiments", style: TextStyle(fontWeight: FontWeight.bold))]),
|
||||
Row(mainAxisAlignment: MainAxisAlignment.center, children: [Text(AppLocalizations.of(context)!.settingsGroupExperiments, style: TextStyle(fontWeight: FontWeight.bold))]),
|
||||
SwitchListTile(
|
||||
title: Text(AppLocalizations.of(context)!.experimentsEnabled, style: TextStyle(color: settings.current().mainTextColor)),
|
||||
subtitle: Text(AppLocalizations.of(context)!.descriptionExperiments),
|
||||
|
|
|
@ -131,15 +131,15 @@ class _GroupSettingsViewState extends State<GroupSettingsView> {
|
|||
height: 20,
|
||||
),
|
||||
ListTile(
|
||||
title: Text(/*AppLocalizations.of(context)!.savePeerHistory*/ "Conversation Notification Policy", style: TextStyle(color: settings.current().mainTextColor)),
|
||||
subtitle: Text(/*AppLocalizations.of(context)!.savePeerHistoryDescription*/ "The system blah blah..."),
|
||||
title: Text(AppLocalizations.of(context)!.conversationNotificationPolicySettingLabel, style: TextStyle(color: settings.current().mainTextColor)),
|
||||
subtitle: Text(AppLocalizations.of(context)!.conversationNotificationPolicySettingDescription),
|
||||
leading: Icon(CwtchIcons.chat_bubble_empty_24px, color: settings.current().mainTextColor),
|
||||
trailing: DropdownButton(
|
||||
value: Provider.of<ContactInfoState>(context).notificationsPolicy,
|
||||
items: ConversationNotificationPolicy.values.map<DropdownMenuItem<ConversationNotificationPolicy>>((ConversationNotificationPolicy value) {
|
||||
return DropdownMenuItem<ConversationNotificationPolicy>(
|
||||
value: value,
|
||||
child: Text(value.toName),
|
||||
child: Text(value.toName(context)),
|
||||
);
|
||||
}).toList(),
|
||||
onChanged: (ConversationNotificationPolicy? newVal) {
|
||||
|
|
|
@ -202,15 +202,15 @@ class _PeerSettingsViewState extends State<PeerSettingsView> {
|
|||
);
|
||||
}).toList())),
|
||||
ListTile(
|
||||
title: Text(/*AppLocalizations.of(context)!.savePeerHistory*/ "Conversation Notification Policy", style: TextStyle(color: settings.current().mainTextColor)),
|
||||
subtitle: Text(/*AppLocalizations.of(context)!.savePeerHistoryDescription*/ "The system blah blah..."),
|
||||
title: Text(AppLocalizations.of(context)!.conversationNotificationPolicySettingLabel, style: TextStyle(color: settings.current().mainTextColor)),
|
||||
subtitle: Text(AppLocalizations.of(context)!.conversationNotificationPolicySettingDescription),
|
||||
leading: Icon(CwtchIcons.chat_bubble_empty_24px, color: settings.current().mainTextColor),
|
||||
trailing: DropdownButton(
|
||||
value: Provider.of<ContactInfoState>(context).notificationsPolicy,
|
||||
items: ConversationNotificationPolicy.values.map<DropdownMenuItem<ConversationNotificationPolicy>>((ConversationNotificationPolicy value) {
|
||||
return DropdownMenuItem<ConversationNotificationPolicy>(
|
||||
value: value,
|
||||
child: Text(value.toName),
|
||||
child: Text(value.toName(context)),
|
||||
);
|
||||
}).toList(),
|
||||
onChanged: (ConversationNotificationPolicy? newVal) {
|
||||
|
|
|
@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
|
|||
import 'package:provider/provider.dart';
|
||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
||||
|
||||
import '../main.dart';
|
||||
import '../settings.dart';
|
||||
|
||||
class SplashView extends StatefulWidget {
|
||||
|
@ -14,6 +15,13 @@ class SplashView extends StatefulWidget {
|
|||
class _SplashViewState extends State<SplashView> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
var cwtch = Provider.of<FlwtchState>(context, listen: false).cwtch;
|
||||
if (!cwtch.isL10nInit()) {
|
||||
if (AppLocalizations.of(context) != null && AppLocalizations.of(context)!.newMessageNotificationSimple.isNotEmpty ) {
|
||||
cwtch.l10nInit(AppLocalizations.of(context)!.newMessageNotificationSimple, AppLocalizations.of(context)!.newMessageNotificationConversationInfo);
|
||||
}
|
||||
}
|
||||
|
||||
return Consumer<AppState>(
|
||||
builder: (context, appState, child) => Scaffold(
|
||||
key: Key("SplashView"),
|
||||
|
|
Loading…
Reference in New Issue