Merge branch 'trunk' into 69nicefixes
continuous-integration/drone/pr Build is running
Details
continuous-integration/drone/pr Build is running
Details
This commit is contained in:
commit
91f44d631c
|
@ -1 +1 @@
|
||||||
2022-11-30-14-27-v1.10.0
|
2022-12-05-13-24-v1.10.0-6-g0d05a07
|
|
@ -1 +1 @@
|
||||||
2022-11-30-19-28-v1.10.0
|
2022-12-05-18-24-v1.10.0-6-g0d05a07
|
|
@ -364,6 +364,14 @@ class MainActivity: FlutterActivity() {
|
||||||
val pass: String = call.argument("pass") ?: ""
|
val pass: String = call.argument("pass") ?: ""
|
||||||
Cwtch.loadProfiles(pass)
|
Cwtch.loadProfiles(pass)
|
||||||
}
|
}
|
||||||
|
"ActivatePeerEngine" -> {
|
||||||
|
val profile: String = call.argument("profile") ?: ""
|
||||||
|
Cwtch.activatePeerEngine(profile)
|
||||||
|
}
|
||||||
|
"DeactivatePeerEngine" -> {
|
||||||
|
val profile: String = call.argument("profile") ?: ""
|
||||||
|
Cwtch.deactivatePeerEngine(profile)
|
||||||
|
}
|
||||||
"ChangePassword" -> {
|
"ChangePassword" -> {
|
||||||
val profile: String = call.argument("ProfileOnion") ?: ""
|
val profile: String = call.argument("ProfileOnion") ?: ""
|
||||||
val pass: String = call.argument("OldPass") ?: ""
|
val pass: String = call.argument("OldPass") ?: ""
|
||||||
|
|
|
@ -12,6 +12,12 @@ abstract class Cwtch {
|
||||||
|
|
||||||
// ignore: non_constant_identifier_names
|
// ignore: non_constant_identifier_names
|
||||||
void CreateProfile(String nick, String pass);
|
void CreateProfile(String nick, String pass);
|
||||||
|
|
||||||
|
// ignore: non_constant_identifier_names
|
||||||
|
void ActivatePeerEngine(String profile);
|
||||||
|
// ignore: non_constant_identifier_names
|
||||||
|
void DeactivatePeerEngine(String profile);
|
||||||
|
|
||||||
// ignore: non_constant_identifier_names
|
// ignore: non_constant_identifier_names
|
||||||
void LoadProfiles(String pass);
|
void LoadProfiles(String pass);
|
||||||
// ignore: non_constant_identifier_names
|
// ignore: non_constant_identifier_names
|
||||||
|
|
|
@ -72,7 +72,7 @@ class CwtchNotifier {
|
||||||
}
|
}
|
||||||
EnvironmentConfig.debugLog("NewPeer $data");
|
EnvironmentConfig.debugLog("NewPeer $data");
|
||||||
// if tag != v1-defaultPassword then it is either encrypted OR it is an unencrypted account created during pre-beta...
|
// if tag != v1-defaultPassword then it is either encrypted OR it is an unencrypted account created during pre-beta...
|
||||||
profileCN.add(data["Identity"], data["name"], data["picture"], data["defaultPicture"], data["ContactsJson"], data["ServerList"], data["Online"] == "true", data["tag"] != "v1-defaultPassword");
|
profileCN.add(data["Identity"], data["name"], data["picture"], data["defaultPicture"], data["ContactsJson"], data["ServerList"], data["Online"] == "true", data["autostart"] == "true", data["tag"] != "v1-defaultPassword");
|
||||||
break;
|
break;
|
||||||
case "ContactCreated":
|
case "ContactCreated":
|
||||||
EnvironmentConfig.debugLog("ContactCreated $data");
|
EnvironmentConfig.debugLog("ContactCreated $data");
|
||||||
|
|
|
@ -301,6 +301,24 @@ class CwtchFfi implements Cwtch {
|
||||||
malloc.free(ut8pass);
|
malloc.free(ut8pass);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ignore: non_constant_identifier_names
|
||||||
|
void ActivatePeerEngine(String profile) {
|
||||||
|
var activatePeerEngineC = library.lookup<NativeFunction<string_to_void_function>>("c_ActivatePeerEngine");
|
||||||
|
final ActivatePeerEngine = activatePeerEngineC.asFunction<StringFn>();
|
||||||
|
final ut8profile = profile.toNativeUtf8();
|
||||||
|
ActivatePeerEngine(ut8profile, ut8profile.length);
|
||||||
|
malloc.free(ut8profile);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ignore: non_constant_identifier_names
|
||||||
|
void DeactivatePeerEngine(String profile) {
|
||||||
|
var deactivatePeerEngineC = library.lookup<NativeFunction<string_to_void_function>>("c_ActivatePeerEngine");
|
||||||
|
final DeactivatePeerEngine = deactivatePeerEngineC.asFunction<StringFn>();
|
||||||
|
final ut8profile = profile.toNativeUtf8();
|
||||||
|
DeactivatePeerEngine(ut8profile, ut8profile.length);
|
||||||
|
malloc.free(ut8profile);
|
||||||
|
}
|
||||||
|
|
||||||
// ignore: non_constant_identifier_names
|
// ignore: non_constant_identifier_names
|
||||||
void LoadProfiles(String pass) {
|
void LoadProfiles(String pass) {
|
||||||
var loadProfileC = library.lookup<NativeFunction<string_to_void_function>>("c_LoadProfiles");
|
var loadProfileC = library.lookup<NativeFunction<string_to_void_function>>("c_LoadProfiles");
|
||||||
|
|
|
@ -75,6 +75,16 @@ class CwtchGomobile implements Cwtch {
|
||||||
cwtchPlatform.invokeMethod("CreateProfile", {"nick": nick, "pass": pass});
|
cwtchPlatform.invokeMethod("CreateProfile", {"nick": nick, "pass": pass});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ignore: non_constant_identifier_names
|
||||||
|
void ActivatePeerEngine(String profile) {
|
||||||
|
cwtchPlatform.invokeMethod("ActivatePeerEngine", {"profile": profile});
|
||||||
|
}
|
||||||
|
|
||||||
|
// ignore: non_constant_identifier_names
|
||||||
|
void DeactivatePeerEngine(String profile) {
|
||||||
|
cwtchPlatform.invokeMethod("DeactivatePeerEngine", {"profile": profile});
|
||||||
|
}
|
||||||
|
|
||||||
// ignore: non_constant_identifier_names
|
// ignore: non_constant_identifier_names
|
||||||
void LoadProfiles(String pass) {
|
void LoadProfiles(String pass) {
|
||||||
cwtchPlatform.invokeMethod("LoadProfiles", {"pass": pass});
|
cwtchPlatform.invokeMethod("LoadProfiles", {"pass": pass});
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
{
|
{
|
||||||
"@@locale": "cy",
|
"@@locale": "cy",
|
||||||
"@@last_modified": "2022-11-18T15:19:11+01:00",
|
"@@last_modified": "2022-12-05T21:06:07+01:00",
|
||||||
|
"profileEnabledDescription": "Start or stop the profile",
|
||||||
|
"profileAutostartDescription": "Controls if the profile will be automatically launched on startup",
|
||||||
|
"profileEnabled": "Enable",
|
||||||
|
"profileAutostartLabel": "Autostart",
|
||||||
"localePtBr": "Brazilian Portuguese \/ Português do Brasil",
|
"localePtBr": "Brazilian Portuguese \/ Português do Brasil",
|
||||||
"localeNl": "Dutch \/ Dutch",
|
"localeNl": "Dutch \/ Dutch",
|
||||||
"experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes",
|
"experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes",
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
{
|
{
|
||||||
"@@locale": "da",
|
"@@locale": "da",
|
||||||
"@@last_modified": "2022-11-18T15:19:11+01:00",
|
"@@last_modified": "2022-12-05T21:06:07+01:00",
|
||||||
|
"profileEnabledDescription": "Start or stop the profile",
|
||||||
|
"profileAutostartDescription": "Controls if the profile will be automatically launched on startup",
|
||||||
|
"profileEnabled": "Enable",
|
||||||
|
"profileAutostartLabel": "Autostart",
|
||||||
"localePtBr": "Brazilian Portuguese \/ Português do Brasil",
|
"localePtBr": "Brazilian Portuguese \/ Português do Brasil",
|
||||||
"localeNl": "Dutch \/ Dutch",
|
"localeNl": "Dutch \/ Dutch",
|
||||||
"experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes",
|
"experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes",
|
||||||
|
|
|
@ -1,14 +1,18 @@
|
||||||
{
|
{
|
||||||
"@@locale": "de",
|
"@@locale": "de",
|
||||||
"@@last_modified": "2022-11-18T15:19:11+01:00",
|
"@@last_modified": "2022-12-05T21:06:07+01:00",
|
||||||
"localePtBr": "Brazilian Portuguese \/ Português do Brasil",
|
"profileEnabledDescription": "Start or stop the profile",
|
||||||
"localeNl": "Dutch \/ Dutch",
|
"profileAutostartDescription": "Controls if the profile will be automatically launched on startup",
|
||||||
"experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes",
|
"profileEnabled": "Enable",
|
||||||
"enableExperimentQRCode": "QR Codes",
|
"profileAutostartLabel": "Autostart",
|
||||||
"shareMenuQRCode": "Show QR Code",
|
"acquiringTicketsFromServer": "Antispam-Herausforderung meistern",
|
||||||
"shareProfileMenuTooltop": "Share profile via...",
|
"acquiredTicketsFromServer": "Antispam-Herausforderung abgeschlossen",
|
||||||
"acquiredTicketsFromServer": "Antispam Challenge Complete",
|
"shareProfileMenuTooltop": "Profil teilen über...",
|
||||||
"acquiringTicketsFromServer": "Performing Antispam Challenge",
|
"localeNl": "Niederländisch \/ Nederlands",
|
||||||
|
"localePtBr": "Brasilianisches Portugiesisch \/ Português do Brasil",
|
||||||
|
"shareMenuQRCode": "QR-Code anzeigen",
|
||||||
|
"enableExperimentQRCode": "QR-Codes",
|
||||||
|
"experimentQRCodeDescription": "QR-Code-Unterstützung ermöglicht den Austausch von Daten (z. B. Profilidentität) über QR-Codes",
|
||||||
"localeIt": "Italienisch \/ Italiano",
|
"localeIt": "Italienisch \/ Italiano",
|
||||||
"errorDownloadDirectoryDoesNotExist": "Die Dateifreigabe kann nicht aktiviert werden, da der Download-Ordner nicht festgelegt wurde oder auf einen nicht vorhandenen Ordner festgelegt ist.",
|
"errorDownloadDirectoryDoesNotExist": "Die Dateifreigabe kann nicht aktiviert werden, da der Download-Ordner nicht festgelegt wurde oder auf einen nicht vorhandenen Ordner festgelegt ist.",
|
||||||
"localeTr": "Türkisch \/ Türk",
|
"localeTr": "Türkisch \/ Türk",
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
{
|
{
|
||||||
"@@locale": "el",
|
"@@locale": "el",
|
||||||
"@@last_modified": "2022-11-18T15:19:11+01:00",
|
"@@last_modified": "2022-12-05T21:06:07+01:00",
|
||||||
|
"profileEnabledDescription": "Start or stop the profile",
|
||||||
|
"profileAutostartDescription": "Controls if the profile will be automatically launched on startup",
|
||||||
|
"profileEnabled": "Enable",
|
||||||
|
"profileAutostartLabel": "Autostart",
|
||||||
"localePtBr": "Brazilian Portuguese \/ Português do Brasil",
|
"localePtBr": "Brazilian Portuguese \/ Português do Brasil",
|
||||||
"localeNl": "Dutch \/ Dutch",
|
"localeNl": "Dutch \/ Dutch",
|
||||||
"experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes",
|
"experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes",
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
{
|
{
|
||||||
"@@locale": "en",
|
"@@locale": "en",
|
||||||
"@@last_modified": "2022-11-18T15:19:11+01:00",
|
"@@last_modified": "2022-12-05T21:06:07+01:00",
|
||||||
|
"profileEnabledDescription": "Start or stop the profile",
|
||||||
|
"profileAutostartDescription": "Controls if the profile will be automatically launched on startup",
|
||||||
|
"profileEnabled": "Enable",
|
||||||
|
"profileAutostartLabel": "Autostart",
|
||||||
"localePtBr": "Brazilian Portuguese \/ Português do Brasil",
|
"localePtBr": "Brazilian Portuguese \/ Português do Brasil",
|
||||||
"localeNl": "Dutch \/ Dutch",
|
"localeNl": "Dutch \/ Dutch",
|
||||||
"experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes",
|
"experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes",
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
{
|
{
|
||||||
"@@locale": "es",
|
"@@locale": "es",
|
||||||
"@@last_modified": "2022-11-18T15:19:11+01:00",
|
"@@last_modified": "2022-12-05T21:06:07+01:00",
|
||||||
|
"profileEnabledDescription": "Start or stop the profile",
|
||||||
|
"profileAutostartDescription": "Controls if the profile will be automatically launched on startup",
|
||||||
|
"profileEnabled": "Enable",
|
||||||
|
"profileAutostartLabel": "Autostart",
|
||||||
"localePtBr": "Brazilian Portuguese \/ Português do Brasil",
|
"localePtBr": "Brazilian Portuguese \/ Português do Brasil",
|
||||||
"localeNl": "Dutch \/ Dutch",
|
"localeNl": "Dutch \/ Dutch",
|
||||||
"experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes",
|
"experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes",
|
||||||
|
|
|
@ -1,14 +1,18 @@
|
||||||
{
|
{
|
||||||
"@@locale": "fr",
|
"@@locale": "fr",
|
||||||
"@@last_modified": "2022-11-18T15:19:11+01:00",
|
"@@last_modified": "2022-12-05T21:06:07+01:00",
|
||||||
"localePtBr": "Brazilian Portuguese \/ Português do Brasil",
|
"profileEnabledDescription": "Start or stop the profile",
|
||||||
"localeNl": "Dutch \/ Dutch",
|
"profileAutostartDescription": "Controls if the profile will be automatically launched on startup",
|
||||||
"experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes",
|
"profileEnabled": "Enable",
|
||||||
|
"profileAutostartLabel": "Autostart",
|
||||||
|
"shareProfileMenuTooltop": "Partager le profil via...",
|
||||||
|
"shareMenuQRCode": "Afficher le QR code",
|
||||||
|
"localePtBr": "Portugais du Brésil \/ Português do Brasil",
|
||||||
|
"localeNl": "néerlandais \/ néerlandais",
|
||||||
|
"experimentQRCodeDescription": "La prise en charge des QR codes permet de partager des données (telles que l'identité du profil) par des QR codes \n",
|
||||||
"enableExperimentQRCode": "QR Codes",
|
"enableExperimentQRCode": "QR Codes",
|
||||||
"shareMenuQRCode": "Show QR Code",
|
"acquiringTicketsFromServer": "Réaliser un défi anti-spam",
|
||||||
"shareProfileMenuTooltop": "Share profile via...",
|
"acquiredTicketsFromServer": "Défi anti-spam terminé",
|
||||||
"acquiredTicketsFromServer": "Antispam Challenge Complete",
|
|
||||||
"acquiringTicketsFromServer": "Performing Antispam Challenge",
|
|
||||||
"errorDownloadDirectoryDoesNotExist": "Le partage de fichiers ne peut pas être activé car le dossier de téléchargement n'a pas été défini ou est défini sur un dossier qui n'existe pas.",
|
"errorDownloadDirectoryDoesNotExist": "Le partage de fichiers ne peut pas être activé car le dossier de téléchargement n'a pas été défini ou est défini sur un dossier qui n'existe pas.",
|
||||||
"localeIt": "italien \/ italien",
|
"localeIt": "italien \/ italien",
|
||||||
"localeTr": "Turc \/ Türk",
|
"localeTr": "Turc \/ Türk",
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
{
|
{
|
||||||
"@@locale": "it",
|
"@@locale": "it",
|
||||||
"@@last_modified": "2022-11-18T15:19:11+01:00",
|
"@@last_modified": "2022-12-05T21:06:07+01:00",
|
||||||
|
"profileEnabledDescription": "Start or stop the profile",
|
||||||
|
"profileAutostartDescription": "Controls if the profile will be automatically launched on startup",
|
||||||
|
"profileEnabled": "Enable",
|
||||||
|
"profileAutostartLabel": "Autostart",
|
||||||
"localePtBr": "Brazilian Portuguese \/ Português do Brasil",
|
"localePtBr": "Brazilian Portuguese \/ Português do Brasil",
|
||||||
"localeNl": "Dutch \/ Dutch",
|
"localeNl": "Dutch \/ Dutch",
|
||||||
"tooltipPinConversation": "Aggiungi la conversazione in cima alla lista \"Conversazioni\"",
|
"tooltipPinConversation": "Aggiungi la conversazione in cima alla lista \"Conversazioni\"",
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
{
|
{
|
||||||
"@@locale": "lb",
|
"@@locale": "lb",
|
||||||
"@@last_modified": "2022-11-18T15:19:11+01:00",
|
"@@last_modified": "2022-12-05T21:06:07+01:00",
|
||||||
|
"profileEnabledDescription": "Start or stop the profile",
|
||||||
|
"profileAutostartDescription": "Controls if the profile will be automatically launched on startup",
|
||||||
|
"profileEnabled": "Enable",
|
||||||
|
"profileAutostartLabel": "Autostart",
|
||||||
"localePtBr": "Brazilian Portuguese \/ Português do Brasil",
|
"localePtBr": "Brazilian Portuguese \/ Português do Brasil",
|
||||||
"localeNl": "Dutch \/ Dutch",
|
"localeNl": "Dutch \/ Dutch",
|
||||||
"experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes",
|
"experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes",
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
{
|
{
|
||||||
"@@locale": "nl",
|
"@@locale": "nl",
|
||||||
"@@last_modified": "2022-11-18T15:19:11+01:00",
|
"@@last_modified": "2022-12-05T21:06:07+01:00",
|
||||||
"localePtBr": "Brazilian Portuguese \/ Português do Brasil",
|
"profileEnabledDescription": "Start or stop the profile",
|
||||||
|
"profileAutostartDescription": "Controls if the profile will be automatically launched on startup",
|
||||||
|
"profileEnabled": "Enable",
|
||||||
|
"profileAutostartLabel": "Autostart",
|
||||||
|
"localePtBr": "Braziliaans Portugees \/ Português do Brasil",
|
||||||
"acquiredTicketsFromServer": "Anti-spam uitdaging voltooid",
|
"acquiredTicketsFromServer": "Anti-spam uitdaging voltooid",
|
||||||
"acquiringTicketsFromServer": "Anti-spam uitdaging uitvoeren",
|
"acquiringTicketsFromServer": "Anti-spam uitdaging uitvoeren",
|
||||||
"acknowledgedLabel": "Erkend",
|
"acknowledgedLabel": "Erkend",
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
{
|
{
|
||||||
"@@locale": "no",
|
"@@locale": "no",
|
||||||
"@@last_modified": "2022-11-18T15:19:11+01:00",
|
"@@last_modified": "2022-12-05T21:06:07+01:00",
|
||||||
|
"profileEnabledDescription": "Start or stop the profile",
|
||||||
|
"profileAutostartDescription": "Controls if the profile will be automatically launched on startup",
|
||||||
|
"profileEnabled": "Enable",
|
||||||
|
"profileAutostartLabel": "Autostart",
|
||||||
"localePtBr": "Brazilian Portuguese \/ Português do Brasil",
|
"localePtBr": "Brazilian Portuguese \/ Português do Brasil",
|
||||||
"localeNl": "Dutch \/ Dutch",
|
"localeNl": "Dutch \/ Dutch",
|
||||||
"experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes",
|
"experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes",
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
{
|
{
|
||||||
"@@locale": "pl",
|
"@@locale": "pl",
|
||||||
"@@last_modified": "2022-11-18T15:19:11+01:00",
|
"@@last_modified": "2022-12-05T21:06:07+01:00",
|
||||||
|
"profileEnabledDescription": "Start or stop the profile",
|
||||||
|
"profileAutostartDescription": "Controls if the profile will be automatically launched on startup",
|
||||||
|
"profileEnabled": "Enable",
|
||||||
|
"profileAutostartLabel": "Autostart",
|
||||||
"localePtBr": "Brazilian Portuguese \/ Português do Brasil",
|
"localePtBr": "Brazilian Portuguese \/ Português do Brasil",
|
||||||
"localeNl": "Dutch \/ Dutch",
|
"localeNl": "Dutch \/ Dutch",
|
||||||
"experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes",
|
"experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes",
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
{
|
{
|
||||||
"@@locale": "pt",
|
"@@locale": "pt",
|
||||||
"@@last_modified": "2022-11-18T15:19:11+01:00",
|
"@@last_modified": "2022-12-05T21:06:07+01:00",
|
||||||
|
"profileEnabledDescription": "Start or stop the profile",
|
||||||
|
"profileAutostartDescription": "Controls if the profile will be automatically launched on startup",
|
||||||
|
"profileEnabled": "Enable",
|
||||||
|
"profileAutostartLabel": "Autostart",
|
||||||
"localePtBr": "Brazilian Portuguese \/ Português do Brasil",
|
"localePtBr": "Brazilian Portuguese \/ Português do Brasil",
|
||||||
"localeNl": "Dutch \/ Dutch",
|
"localeNl": "Dutch \/ Dutch",
|
||||||
"experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes",
|
"experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes",
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
{
|
{
|
||||||
"@@locale": "pt_BR",
|
"@@locale": "pt_BR",
|
||||||
"@@last_modified": "2022-11-18T15:19:11+01:00",
|
"@@last_modified": "2022-12-05T21:06:07+01:00",
|
||||||
|
"profileEnabledDescription": "Start or stop the profile",
|
||||||
|
"profileAutostartDescription": "Controls if the profile will be automatically launched on startup",
|
||||||
|
"profileEnabled": "Enable",
|
||||||
|
"profileAutostartLabel": "Autostart",
|
||||||
"localePtBr": "Português do Brasil \/ Português do Brasil",
|
"localePtBr": "Português do Brasil \/ Português do Brasil",
|
||||||
"localeNl": "Dutch \/ Dutch",
|
"localeNl": "Dutch \/ Dutch",
|
||||||
"experimentQRCodeDescription": "O suporte a QR Code permite o compartilhamento de dados (como identidade de perfil) através dos QR Codes",
|
"experimentQRCodeDescription": "O suporte a QR Code permite o compartilhamento de dados (como identidade de perfil) através dos QR Codes",
|
||||||
|
@ -289,7 +293,7 @@
|
||||||
"password1Label": "Senha",
|
"password1Label": "Senha",
|
||||||
"currentPasswordLabel": "Senha Atual",
|
"currentPasswordLabel": "Senha Atual",
|
||||||
"yourDisplayName": "Seu nome de exibição",
|
"yourDisplayName": "Seu nome de exibição",
|
||||||
"profileOnionLabel": "Envie este endereço para contatos que você deseja se conectar",
|
"profileOnionLabel": "Send this address to contacts you want to connect with",
|
||||||
"noPasswordWarning": "Não usar uma senha nesta conta significa que todos os dados armazenados localmente não serão criptografados",
|
"noPasswordWarning": "Não usar uma senha nesta conta significa que todos os dados armazenados localmente não serão criptografados",
|
||||||
"radioNoPassword": "Descriptografado (Sem senha)",
|
"radioNoPassword": "Descriptografado (Sem senha)",
|
||||||
"radioUsePassword": "Senha",
|
"radioUsePassword": "Senha",
|
||||||
|
@ -299,13 +303,13 @@
|
||||||
"profileName": "Nome de exibição",
|
"profileName": "Nome de exibição",
|
||||||
"editProfileTitle": "Editar perfil",
|
"editProfileTitle": "Editar perfil",
|
||||||
"addProfileTitle": "Adicionar novo perfil",
|
"addProfileTitle": "Adicionar novo perfil",
|
||||||
"deleteBtn": "Deletar",
|
"deleteBtn": "Delete",
|
||||||
"unblockBtn": "Desbloquear Contato",
|
"unblockBtn": "Desbloquear Contato",
|
||||||
"dontSavePeerHistory": "Deletar histórico",
|
"dontSavePeerHistory": "Deletar histórico",
|
||||||
"savePeerHistoryDescription": "Determina se deve excluir algum histórico associado com o contato.",
|
"savePeerHistoryDescription": "Determina se deve excluir algum histórico associado com o contato.",
|
||||||
"savePeerHistory": "Salvar histórico",
|
"savePeerHistory": "Salvar histórico",
|
||||||
"blockBtn": "Bloquear Contato",
|
"blockBtn": "Bloquear Contato",
|
||||||
"saveBtn": "Salvar",
|
"saveBtn": "Save",
|
||||||
"displayNameLabel": "Nome de Exibição",
|
"displayNameLabel": "Nome de Exibição",
|
||||||
"copiedToClipboardNotification": "Copiado",
|
"copiedToClipboardNotification": "Copiado",
|
||||||
"addressLabel": "Endereço",
|
"addressLabel": "Endereço",
|
||||||
|
@ -339,7 +343,7 @@
|
||||||
"serverConnectivityConnected": "Servidor Conectado",
|
"serverConnectivityConnected": "Servidor Conectado",
|
||||||
"serverInfo": "Informação do Servidor",
|
"serverInfo": "Informação do Servidor",
|
||||||
"invitationLabel": "Convite",
|
"invitationLabel": "Convite",
|
||||||
"serverLabel": "Servidor",
|
"serverLabel": "Server",
|
||||||
"search": "Pesquisar...",
|
"search": "Pesquisar...",
|
||||||
"blocked": "Bloqueado",
|
"blocked": "Bloqueado",
|
||||||
"pasteAddressToAddContact": "… cole um endereço aqui para adicionar um contato…",
|
"pasteAddressToAddContact": "… cole um endereço aqui para adicionar um contato…",
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
{
|
{
|
||||||
"@@locale": "ro",
|
"@@locale": "ro",
|
||||||
"@@last_modified": "2022-11-18T15:19:11+01:00",
|
"@@last_modified": "2022-12-05T21:06:07+01:00",
|
||||||
|
"profileEnabledDescription": "Start or stop the profile",
|
||||||
|
"profileAutostartDescription": "Controls if the profile will be automatically launched on startup",
|
||||||
|
"profileEnabled": "Enable",
|
||||||
|
"profileAutostartLabel": "Autostart",
|
||||||
"localePtBr": "Brazilian Portuguese \/ Português do Brasil",
|
"localePtBr": "Brazilian Portuguese \/ Português do Brasil",
|
||||||
"localeNl": "Dutch \/ Dutch",
|
"localeNl": "Dutch \/ Dutch",
|
||||||
"experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes",
|
"experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes",
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
{
|
{
|
||||||
"@@locale": "ru",
|
"@@locale": "ru",
|
||||||
"@@last_modified": "2022-11-18T15:19:11+01:00",
|
"@@last_modified": "2022-12-05T21:06:07+01:00",
|
||||||
|
"profileEnabledDescription": "Start or stop the profile",
|
||||||
|
"profileAutostartDescription": "Controls if the profile will be automatically launched on startup",
|
||||||
|
"profileEnabled": "Enable",
|
||||||
|
"profileAutostartLabel": "Autostart",
|
||||||
"localePtBr": "Brazilian Portuguese \/ Português do Brasil",
|
"localePtBr": "Brazilian Portuguese \/ Português do Brasil",
|
||||||
"localeNl": "Dutch \/ Dutch",
|
"localeNl": "Dutch \/ Dutch",
|
||||||
"experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes",
|
"experimentQRCodeDescription": "QR Code support allows sharing data (such as profile identity) by QR Codes",
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
{
|
{
|
||||||
"@@locale": "tr",
|
"@@locale": "tr",
|
||||||
"@@last_modified": "2022-11-18T15:19:11+01:00",
|
"@@last_modified": "2022-12-05T21:06:07+01:00",
|
||||||
"localePtBr": "Brazilian Portuguese \/ Português do Brasil",
|
"profileEnabledDescription": "Start or stop the profile",
|
||||||
|
"profileAutostartDescription": "Controls if the profile will be automatically launched on startup",
|
||||||
|
"profileEnabled": "Enable",
|
||||||
|
"profileAutostartLabel": "Autostart",
|
||||||
|
"localePtBr": "Brezilya Portekizcesi \/ Português do Brasil",
|
||||||
"experimentQRCodeDescription": "QR Kod desteği profil kimliği gibi verilerin QR Kodla paylaşılmasına olanak tanır",
|
"experimentQRCodeDescription": "QR Kod desteği profil kimliği gibi verilerin QR Kodla paylaşılmasına olanak tanır",
|
||||||
"acquiringTicketsFromServer": "Spame Karşı Sınama",
|
"acquiringTicketsFromServer": "Spame Karşı Sınama",
|
||||||
"acquiredTicketsFromServer": "Spame Karşı Sınama Tamamlandı",
|
"acquiredTicketsFromServer": "Spame Karşı Sınama Tamamlandı",
|
||||||
|
|
|
@ -26,6 +26,9 @@ class ProfileInfoState extends ChangeNotifier {
|
||||||
// in the constructor if the profile is encrypted with the defacto password.
|
// in the constructor if the profile is encrypted with the defacto password.
|
||||||
bool _encrypted = true;
|
bool _encrypted = true;
|
||||||
|
|
||||||
|
bool _autostart = true;
|
||||||
|
bool _enabled = false;
|
||||||
|
|
||||||
ProfileInfoState({
|
ProfileInfoState({
|
||||||
required this.onion,
|
required this.onion,
|
||||||
nickname = "",
|
nickname = "",
|
||||||
|
@ -35,6 +38,7 @@ class ProfileInfoState extends ChangeNotifier {
|
||||||
contactsJson = "",
|
contactsJson = "",
|
||||||
serversJson = "",
|
serversJson = "",
|
||||||
online = false,
|
online = false,
|
||||||
|
autostart = true,
|
||||||
encrypted = true,
|
encrypted = true,
|
||||||
String,
|
String,
|
||||||
}) {
|
}) {
|
||||||
|
@ -43,6 +47,11 @@ class ProfileInfoState extends ChangeNotifier {
|
||||||
this._defaultImagePath = defaultImagePath;
|
this._defaultImagePath = defaultImagePath;
|
||||||
this._unreadMessages = unreadMessages;
|
this._unreadMessages = unreadMessages;
|
||||||
this._online = online;
|
this._online = online;
|
||||||
|
this._enabled = _enabled;
|
||||||
|
this._autostart = autostart;
|
||||||
|
if (autostart) {
|
||||||
|
this._enabled = true;
|
||||||
|
}
|
||||||
this._encrypted = encrypted;
|
this._encrypted = encrypted;
|
||||||
|
|
||||||
_contacts.connectServers(this._servers);
|
_contacts.connectServers(this._servers);
|
||||||
|
@ -130,6 +139,20 @@ class ProfileInfoState extends ChangeNotifier {
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool get enabled => this._enabled;
|
||||||
|
|
||||||
|
set enabled(bool newVal) {
|
||||||
|
this._enabled = newVal;
|
||||||
|
notifyListeners();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool get autostart => this._autostart;
|
||||||
|
|
||||||
|
set autostart(bool newVal) {
|
||||||
|
this._autostart = newVal;
|
||||||
|
notifyListeners();
|
||||||
|
}
|
||||||
|
|
||||||
String get defaultImagePath => this._defaultImagePath;
|
String get defaultImagePath => this._defaultImagePath;
|
||||||
|
|
||||||
set defaultImagePath(String newVal) {
|
set defaultImagePath(String newVal) {
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import 'dart:ui';
|
||||||
|
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
|
|
||||||
|
@ -7,11 +9,11 @@ class ProfileListState extends ChangeNotifier {
|
||||||
List<ProfileInfoState> _profiles = [];
|
List<ProfileInfoState> _profiles = [];
|
||||||
int get num => _profiles.length;
|
int get num => _profiles.length;
|
||||||
|
|
||||||
void add(String onion, String name, String picture, String defaultPicture, String contactsJson, String serverJson, bool online, bool encrypted) {
|
void add(String onion, String name, String picture, String defaultPicture, String contactsJson, String serverJson, bool online, bool autostart, bool encrypted) {
|
||||||
var idx = _profiles.indexWhere((element) => element.onion == onion);
|
var idx = _profiles.indexWhere((element) => element.onion == onion);
|
||||||
if (idx == -1) {
|
if (idx == -1) {
|
||||||
_profiles.add(ProfileInfoState(
|
_profiles.add(ProfileInfoState(
|
||||||
onion: onion, nickname: name, imagePath: picture, defaultImagePath: defaultPicture, contactsJson: contactsJson, serversJson: serverJson, online: online, encrypted: encrypted));
|
onion: onion, nickname: name, imagePath: picture, defaultImagePath: defaultPicture, contactsJson: contactsJson, serversJson: serverJson, online: online, autostart: autostart, encrypted: encrypted));
|
||||||
} else {
|
} else {
|
||||||
_profiles[idx].updateFrom(onion, name, picture, contactsJson, serverJson, online);
|
_profiles[idx].updateFrom(onion, name, picture, contactsJson, serverJson, online);
|
||||||
}
|
}
|
||||||
|
|
|
@ -169,6 +169,45 @@ class _AddEditProfileViewState extends State<AddEditProfileView> {
|
||||||
)
|
)
|
||||||
])),
|
])),
|
||||||
// We only allow setting password types on profile creation
|
// We only allow setting password types on profile creation
|
||||||
|
|
||||||
|
// Enabled
|
||||||
|
Visibility(
|
||||||
|
visible: Provider.of<ProfileInfoState>(context).onion.isNotEmpty,
|
||||||
|
child: SwitchListTile(
|
||||||
|
title: Text(AppLocalizations.of(context)!.profileEnabled, style: TextStyle(color: Provider.of<Settings>(context).current().mainTextColor)),
|
||||||
|
subtitle: Text(AppLocalizations.of(context)!.profileEnabledDescription),
|
||||||
|
value: Provider.of<ProfileInfoState>(context).enabled,
|
||||||
|
onChanged: (bool value) {
|
||||||
|
Provider.of<ProfileInfoState>(context).enabled = value;
|
||||||
|
if (value) {
|
||||||
|
Provider.of<FlwtchState>(context, listen: false).cwtch.ActivatePeerEngine(Provider.of<ProfileInfoState>(context).onion);
|
||||||
|
} else {
|
||||||
|
Provider.of<FlwtchState>(context, listen: false).cwtch.DeactivatePeerEngine(Provider.of<ProfileInfoState>(context).onion);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
activeTrackColor: Provider.of<Settings>(context).theme.defaultButtonColor,
|
||||||
|
inactiveTrackColor: Provider.of<Settings>(context).theme.defaultButtonDisabledColor,
|
||||||
|
secondary: Icon(CwtchIcons.negative_heart_24px, color: Provider.of<Settings>(context).current().mainTextColor),
|
||||||
|
)),
|
||||||
|
|
||||||
|
// Auto start
|
||||||
|
SwitchListTile(
|
||||||
|
title: Text(AppLocalizations.of(context)!.profileAutostartLabel, style: TextStyle(color: Provider.of<Settings>(context).current().mainTextColor)),
|
||||||
|
subtitle: Text(AppLocalizations.of(context)!.profileAutostartDescription),
|
||||||
|
value: Provider.of<ProfileInfoState>(context).autostart,
|
||||||
|
onChanged: (bool value) {
|
||||||
|
Provider.of<ProfileInfoState>(context).autostart = value;
|
||||||
|
|
||||||
|
if (!Provider.of<ProfileInfoState>(context).onion.isEmpty) {
|
||||||
|
Provider.of<FlwtchState>(context, listen: false).cwtch.SetProfileAttribute(Provider.of<ProfileInfoState>(context).onion, "profile.autostart", value ? "true" : "false");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
activeTrackColor: Provider.of<Settings>(context).theme.defaultButtonColor,
|
||||||
|
inactiveTrackColor: Provider.of<Settings>(context).theme.defaultButtonDisabledColor,
|
||||||
|
secondary: Icon(CwtchIcons.favorite_24dp, color: Provider.of<Settings>(context).current().mainTextColor),
|
||||||
|
),
|
||||||
|
|
||||||
|
|
||||||
Visibility(
|
Visibility(
|
||||||
visible: Provider.of<ProfileInfoState>(context).onion.isEmpty,
|
visible: Provider.of<ProfileInfoState>(context).onion.isEmpty,
|
||||||
child: SizedBox(
|
child: SizedBox(
|
||||||
|
@ -339,7 +378,7 @@ class _AddEditProfileViewState extends State<AddEditProfileView> {
|
||||||
showAlertDialog(context);
|
showAlertDialog(context);
|
||||||
},
|
},
|
||||||
icon: Icon(Icons.delete_forever),
|
icon: Icon(Icons.delete_forever),
|
||||||
label: Text(AppLocalizations.of(context)!.deleteBtn),
|
label: Text(AppLocalizations.of(context)!.deleteBtn, style: TextStyle(color: Provider.of<Settings>(context).theme.defaultButtonActiveColor)),
|
||||||
)))
|
)))
|
||||||
]))))));
|
]))))));
|
||||||
});
|
});
|
||||||
|
@ -358,6 +397,7 @@ class _AddEditProfileViewState extends State<AddEditProfileView> {
|
||||||
// match (and are provided if the user has requested an encrypted profile).
|
// match (and are provided if the user has requested an encrypted profile).
|
||||||
if (_formKey.currentState!.validate()) {
|
if (_formKey.currentState!.validate()) {
|
||||||
if (Provider.of<ProfileInfoState>(context, listen: false).onion.isEmpty) {
|
if (Provider.of<ProfileInfoState>(context, listen: false).onion.isEmpty) {
|
||||||
|
// TODO: save autostart in create flow
|
||||||
if (usePassword == true) {
|
if (usePassword == true) {
|
||||||
Provider.of<FlwtchState>(context, listen: false).cwtch.CreateProfile(ctrlrNick.value.text, ctrlrPass.value.text);
|
Provider.of<FlwtchState>(context, listen: false).cwtch.CreateProfile(ctrlrNick.value.text, ctrlrPass.value.text);
|
||||||
Navigator.of(context).pop();
|
Navigator.of(context).pop();
|
||||||
|
|
|
@ -51,7 +51,7 @@ class _ContactRowState extends State<ContactRow> {
|
||||||
badgeTextColor: Provider.of<Settings>(context).theme.portraitContactBadgeTextColor,
|
badgeTextColor: Provider.of<Settings>(context).theme.portraitContactBadgeTextColor,
|
||||||
diameter: 64.0,
|
diameter: 64.0,
|
||||||
imagePath: Provider.of<Settings>(context).isExperimentEnabled(ImagePreviewsExperiment) ? contact.imagePath : contact.defaultImagePath,
|
imagePath: Provider.of<Settings>(context).isExperimentEnabled(ImagePreviewsExperiment) ? contact.imagePath : contact.defaultImagePath,
|
||||||
maskOut: !contact.isOnline(),
|
disabled: !contact.isOnline(),
|
||||||
border: contact.isOnline()
|
border: contact.isOnline()
|
||||||
? Provider.of<Settings>(context).theme.portraitOnlineBorderColor
|
? Provider.of<Settings>(context).theme.portraitOnlineBorderColor
|
||||||
: contact.isBlocked
|
: contact.isBlocked
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'dart:math';
|
import 'dart:math';
|
||||||
|
|
||||||
|
import 'package:cwtch/cwtch_icons_icons.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:cwtch/themes/opaque.dart';
|
import 'package:cwtch/themes/opaque.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
@ -17,6 +18,7 @@ class ProfileImage extends StatefulWidget {
|
||||||
required this.badgeTextColor,
|
required this.badgeTextColor,
|
||||||
this.maskOut = false,
|
this.maskOut = false,
|
||||||
this.tooltip = "",
|
this.tooltip = "",
|
||||||
|
this.disabled = false,
|
||||||
this.badgeEdit = false,
|
this.badgeEdit = false,
|
||||||
this.badgeIcon = null});
|
this.badgeIcon = null});
|
||||||
final double diameter;
|
final double diameter;
|
||||||
|
@ -26,6 +28,7 @@ class ProfileImage extends StatefulWidget {
|
||||||
final Color badgeColor;
|
final Color badgeColor;
|
||||||
final Color badgeTextColor;
|
final Color badgeTextColor;
|
||||||
final bool maskOut;
|
final bool maskOut;
|
||||||
|
final bool disabled;
|
||||||
final bool badgeEdit;
|
final bool badgeEdit;
|
||||||
final String tooltip;
|
final String tooltip;
|
||||||
final Widget? badgeIcon;
|
final Widget? badgeIcon;
|
||||||
|
@ -79,10 +82,15 @@ class _ProfileImageState extends State<ProfileImage> {
|
||||||
width: widget.diameter,
|
width: widget.diameter,
|
||||||
height: widget.diameter,
|
height: widget.diameter,
|
||||||
color: widget.border,
|
color: widget.border,
|
||||||
|
foregroundDecoration: widget.disabled ? BoxDecoration(
|
||||||
|
color: Provider.of<Settings>(context).theme.portraitBackgroundColor, //Colors.grey,
|
||||||
|
backgroundBlendMode: BlendMode.color, //saturation,
|
||||||
|
) : null,
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: const EdgeInsets.all(2.0), //border size
|
padding: const EdgeInsets.all(2.0), //border size
|
||||||
child: ClipOval(clipBehavior: Clip.antiAlias, child: widget.tooltip == "" ? image : Tooltip(message: widget.tooltip, child: image))))),
|
child: ClipOval(clipBehavior: Clip.antiAlias, child: widget.tooltip == "" ? image : Tooltip(message: widget.tooltip, child: image))))),
|
||||||
Visibility(
|
// badge
|
||||||
|
Visibility(
|
||||||
visible: widget.badgeIcon != null || widget.badgeEdit || widget.badgeCount > 0,
|
visible: widget.badgeIcon != null || widget.badgeEdit || widget.badgeCount > 0,
|
||||||
child: Positioned(
|
child: Positioned(
|
||||||
bottom: 0.0,
|
bottom: 0.0,
|
||||||
|
@ -98,6 +106,23 @@ class _ProfileImageState extends State<ProfileImage> {
|
||||||
: (widget.badgeIcon != null ? widget.badgeIcon : Text(widget.badgeCount > 99 ? "99+" : widget.badgeCount.toString(), style: TextStyle(color: widget.badgeTextColor, fontSize: 8.0))),
|
: (widget.badgeIcon != null ? widget.badgeIcon : Text(widget.badgeCount > 99 ? "99+" : widget.badgeCount.toString(), style: TextStyle(color: widget.badgeTextColor, fontSize: 8.0))),
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
|
// disabled center icon
|
||||||
|
Visibility(
|
||||||
|
visible: widget.disabled,
|
||||||
|
child: Container(
|
||||||
|
width: widget.diameter,
|
||||||
|
height: widget.diameter,
|
||||||
|
child:
|
||||||
|
Center(
|
||||||
|
|
||||||
|
|
||||||
|
child: Icon(
|
||||||
|
CwtchIcons.negative_heart_24px,
|
||||||
|
size: widget.diameter / 1.5,
|
||||||
|
color: Provider.of<Settings>(context).theme.portraitOfflineBorderColor,
|
||||||
|
)
|
||||||
|
|
||||||
|
))),
|
||||||
]));
|
]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,6 +37,7 @@ class _ProfileRowState extends State<ProfileRow> {
|
||||||
badgeCount: profile.unreadMessages,
|
badgeCount: profile.unreadMessages,
|
||||||
badgeColor: Provider.of<Settings>(context).theme.portraitProfileBadgeColor,
|
badgeColor: Provider.of<Settings>(context).theme.portraitProfileBadgeColor,
|
||||||
badgeTextColor: Provider.of<Settings>(context).theme.portraitProfileBadgeTextColor,
|
badgeTextColor: Provider.of<Settings>(context).theme.portraitProfileBadgeTextColor,
|
||||||
|
disabled: !profile.enabled,
|
||||||
diameter: 64.0,
|
diameter: 64.0,
|
||||||
imagePath: Provider.of<Settings>(context).isExperimentEnabled(ImagePreviewsExperiment) ? profile.imagePath : profile.defaultImagePath,
|
imagePath: Provider.of<Settings>(context).isExperimentEnabled(ImagePreviewsExperiment) ? profile.imagePath : profile.defaultImagePath,
|
||||||
border: profile.isOnline ? Provider.of<Settings>(context).theme.portraitOnlineBorderColor : Provider.of<Settings>(context).theme.portraitOfflineBorderColor)),
|
border: profile.isOnline ? Provider.of<Settings>(context).theme.portraitOnlineBorderColor : Provider.of<Settings>(context).theme.portraitOfflineBorderColor)),
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
exec env LD_LIBRARY_PATH=./lib/ ./lib/cwtch
|
exec env LD_LIBRARY_PATH=./lib/:./lib/Tor ./lib/cwtch
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
exec env LD_LIBRARY_PATH=~/.local/lib/cwtch/ ~/.local/lib/cwtch/cwtch
|
exec env LD_LIBRARY_PATH=~/.local/lib/cwtch/:~/.local/lib/cwtch/Tor ~/.local/lib/cwtch/cwtch
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
exec env LD_LIBRARY_PATH=/usr/lib/cwtch /usr/lib/cwtch/cwtch
|
exec env LD_LIBRARY_PATH=/usr/lib/cwtch:/usr/lib/cwtch/Tor /usr/lib/cwtch/cwtch
|
||||||
|
|
Loading…
Reference in New Issue