Compare commits

...

7 Commits
trunk ... aar64

Author SHA1 Message Date
Dan Ballard 6bf6929241 android: aar needs an libs/arm64 ? 2021-06-01 16:42:55 -07:00
Dan Ballard b31e6243d5 Merge remote-tracking branch 'origin' into aar64 2021-06-01 16:42:38 -07:00
Sarah Jamie Lewis 0500773b6c Merge pull request 'version bump for android/play and ffi/linux use locally bundled tor' (#123) from verBumpTor into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #123
2021-06-01 14:57:57 -07:00
Sarah Jamie Lewis 7f33dc8502 Merge branch 'trunk' into verBumpTor
continuous-integration/drone/pr Build is passing Details
2021-06-01 14:57:15 -07:00
Dan Ballard 6c60a93958 version bump for android/play and ffi/linux use locally bundled tor
continuous-integration/drone/pr Build is passing Details
2021-06-01 14:53:13 -07:00
erinn 3b35b35bce Merge pull request 'New Strings, Updated Message Error UI + Make Acks Larger' (#112) from ui_fixes into trunk
continuous-integration/drone/push Build is passing Details
Reviewed-on: #112
2021-06-01 14:00:01 -07:00
Sarah Jamie Lewis 6a01e94846 New Strings, Updated Message Error UI + Make Acks Larger
continuous-integration/drone/pr Build is passing Details
2021-06-01 13:53:38 -07:00
13 changed files with 83 additions and 24 deletions

View File

@ -82,6 +82,7 @@ class CwtchFfi implements Cwtch {
Map<String, String> envVars = Platform.environment;
if (Platform.isLinux) {
home = (envVars['HOME'])!;
bundledTor = "./tor";
} else if (Platform.isWindows) {
home = (envVars['UserProfile'])!;
bundledTor = "Tor\\Tor\\tor.exe";

View File

@ -75,10 +75,12 @@
"invitation": "Einladung",
"invitationLabel": "Einladung",
"inviteBtn": "Einladen",
"inviteToGroup": "",
"inviteToGroupLabel": "In die Gruppe einladen",
"joinGroup": "Gruppe beitreten",
"joinGroupTab": "Einer Gruppe beitreten",
"largeTextLabel": "Groß",
"leaveGroup": "",
"listsBtn": "Listen",
"loadingTor": "Tor wird geladen...",
"localeDe": "Deutsche",
@ -95,6 +97,7 @@
"newBulletinLabel": "Neue Meldung",
"newConnectionPaneTitle": "Neue Verbindung",
"newGroupBtn": "Neue Gruppe anlegen",
"newPassword": "",
"newProfile": "Neues Profil",
"noPasswordWarning": "Wenn für dieses Konto kein Passwort verwendet wird, bedeutet dies, dass alle lokal gespeicherten Daten nicht verschlüsselt werden.",
"password": "Passwort",
@ -116,6 +119,7 @@
"puzzleGameBtn": "Puzzlespiel",
"radioNoPassword": "Unverschlüsselt (kein Passwort)",
"radioUsePassword": "Passwort",
"reallyLeaveThisGroupPrompt": "",
"rejectGroupBtn": "Ablehnen",
"saveBtn": "Speichern",
"savePeerHistory": "Peer-Verlauf speichern",
@ -153,6 +157,7 @@
"versionTor": "Version %1 mit tor %2",
"viewGroupMembershipTooltip": "Gruppenmitgliedschaft anzeigen",
"viewServerInfo": "",
"yesLeave": "",
"yourDisplayName": "Ihr Anzeigename",
"yourProfiles": "Ihre Profile",
"yourServers": "Ihre Server",

View File

@ -75,10 +75,12 @@
"invitation": "Invitation",
"invitationLabel": "Invitation",
"inviteBtn": "Invite",
"inviteToGroup": "You have been invited to join a group:",
"inviteToGroupLabel": "Invite to group",
"joinGroup": "Join group",
"joinGroupTab": "Join a group",
"largeTextLabel": "Large",
"leaveGroup": "Leave This Conversation",
"listsBtn": "Lists",
"loadingTor": "Loading tor...",
"localeDe": "Deutsche",
@ -95,6 +97,7 @@
"newBulletinLabel": "New Bulletin",
"newConnectionPaneTitle": "New Connection",
"newGroupBtn": "Create new group",
"newPassword": "New Password",
"newProfile": "New Profile",
"noPasswordWarning": "Not using a password on this account means that all data stored locally will not be encrypted",
"password": "Password",
@ -103,7 +106,7 @@
"passwordChangeError": "Error changing password: Supplied password rejected",
"passwordErrorEmpty": "Password cannot be empty",
"passwordErrorMatch": "Passwords do not match",
"pasteAddressToAddContact": "Paste a cwtch address here to add a new contact.",
"pasteAddressToAddContact": "Paste a cwtch address, invitation or key bundle here to add a new conversation",
"peerAddress": "Address",
"peerBlockedMessage": "Peer is blocked",
"peerName": "Name",
@ -116,6 +119,7 @@
"puzzleGameBtn": "Puzzle Game",
"radioNoPassword": "Unencrypted (No password)",
"radioUsePassword": "Password",
"reallyLeaveThisGroupPrompt": "Are you sure you want to leave this conversation? All messages and attributes will be deleted.",
"rejectGroupBtn": "Reject",
"saveBtn": "Save",
"savePeerHistory": "Save Peer History",
@ -137,12 +141,12 @@
"successfullAddedContact": "Successfully added ",
"themeDark": "Dark",
"themeLight": "Light",
"titleManageContacts": "Manage Contacts",
"titleManageContacts": "Conversations",
"titleManageProfiles": "Manage Cwtch Profiles",
"titleManageServers": "Manage Servers",
"titlePlaceholder": "title...",
"todoPlaceholder": "Todo...",
"tooltipAddContact": "Add a new contact",
"tooltipAddContact": "Add a new contact or conversation",
"tooltipOpenSettings": "Open the settings pane",
"tooltipUnlockProfiles": "Unlock encrypted profiles by entering their password.",
"unblockBtn": "Unblock Peer",
@ -153,6 +157,7 @@
"versionTor": "Version %1 with tor %2",
"viewGroupMembershipTooltip": "View Group Membership",
"viewServerInfo": "Server Info",
"yesLeave": "Yes, Leave This Conversation",
"yourDisplayName": "Your Display Name",
"yourProfiles": "Your Profiles",
"yourServers": "Your Servers",

View File

@ -75,10 +75,12 @@
"invitation": "Invitación",
"invitationLabel": "Invitación",
"inviteBtn": "Invitar",
"inviteToGroup": "",
"inviteToGroupLabel": "Invitar al grupo",
"joinGroup": "Únete al grupo",
"joinGroupTab": "Únete a un grupo",
"largeTextLabel": "Grande",
"leaveGroup": "",
"listsBtn": "Listas",
"loadingTor": "Cargando tor...",
"localeDe": "Alemán",
@ -95,6 +97,7 @@
"newBulletinLabel": "Nuevo Boletín",
"newConnectionPaneTitle": "Nueva conexión",
"newGroupBtn": "Crear un nuevo grupo de chat",
"newPassword": "",
"newProfile": "Nuevo perfil",
"noPasswordWarning": "No usar una contraseña para esta cuenta significa que los datos almacenados localmente no serán encriptados",
"password": "Contraseña",
@ -116,6 +119,7 @@
"puzzleGameBtn": "Juego de rompecabezas",
"radioNoPassword": "Sin cifrado (sin contraseña)",
"radioUsePassword": "Contraseña",
"reallyLeaveThisGroupPrompt": "",
"rejectGroupBtn": "Rechazar",
"saveBtn": "Guardar",
"savePeerHistory": "Guardar el historial con contacto",
@ -153,6 +157,7 @@
"versionTor": "Versión %1 con tor %2",
"viewGroupMembershipTooltip": "Ver membresía del grupo",
"viewServerInfo": "Información del servidor",
"yesLeave": "",
"yourDisplayName": "Tu nombre de usuario",
"yourProfiles": "Tus perfiles",
"yourServers": "Tus servidores",

View File

@ -75,10 +75,12 @@
"invitation": "",
"invitationLabel": "Invitation",
"inviteBtn": "Invitation",
"inviteToGroup": "",
"inviteToGroupLabel": "Inviter quelqu'un",
"joinGroup": "",
"joinGroupTab": "",
"largeTextLabel": "Large",
"leaveGroup": "",
"listsBtn": "Listes",
"loadingTor": "",
"localeDe": "",
@ -95,6 +97,7 @@
"newBulletinLabel": "Nouveau bulletin",
"newConnectionPaneTitle": "",
"newGroupBtn": "Créer un nouveau groupe",
"newPassword": "",
"newProfile": "",
"noPasswordWarning": "",
"password": "",
@ -116,6 +119,7 @@
"puzzleGameBtn": "Puzzle",
"radioNoPassword": "",
"radioUsePassword": "",
"reallyLeaveThisGroupPrompt": "",
"rejectGroupBtn": "Refuser",
"saveBtn": "Sauvegarder",
"savePeerHistory": "",
@ -153,6 +157,7 @@
"versionTor": "",
"viewGroupMembershipTooltip": "",
"viewServerInfo": "",
"yesLeave": "",
"yourDisplayName": "",
"yourProfiles": "",
"yourServers": "",

View File

@ -75,10 +75,12 @@
"invitation": "Invito",
"invitationLabel": "Invito",
"inviteBtn": "Invitare",
"inviteToGroup": "",
"inviteToGroupLabel": "Invitare nel gruppo",
"joinGroup": "Unisciti al gruppo",
"joinGroupTab": "Unisciti a un gruppo",
"largeTextLabel": "Grande",
"leaveGroup": "",
"listsBtn": "Liste",
"loadingTor": "Caricamento di tor...",
"localeDe": "Tedesco",
@ -95,6 +97,7 @@
"newBulletinLabel": "Nuovo bollettino",
"newConnectionPaneTitle": "Nuova connessione",
"newGroupBtn": "Crea un nuovo gruppo",
"newPassword": "",
"newProfile": "Nuovo profilo",
"noPasswordWarning": "Non utilizzare una password su questo account significa che tutti i dati archiviati localmente non verranno criptati",
"password": "Password",
@ -116,6 +119,7 @@
"puzzleGameBtn": "Gioco di puzzle",
"radioNoPassword": "Non criptato (senza password)",
"radioUsePassword": "Password",
"reallyLeaveThisGroupPrompt": "",
"rejectGroupBtn": "Rifiuta",
"saveBtn": "Salva",
"savePeerHistory": "Salva cronologia peer",
@ -153,6 +157,7 @@
"versionTor": "Versione %1 con tor %2",
"viewGroupMembershipTooltip": "Visualizza i membri del gruppo",
"viewServerInfo": "Informazioni sul server",
"yesLeave": "",
"yourDisplayName": "Il tuo nome visualizzato",
"yourProfiles": "I tuoi profili",
"yourServers": "I tuoi server",

View File

@ -75,10 +75,12 @@
"invitation": "",
"invitationLabel": "Convite",
"inviteBtn": "Convidar",
"inviteToGroup": "",
"inviteToGroupLabel": "Convidar ao grupo",
"joinGroup": "",
"joinGroupTab": "",
"largeTextLabel": "Grande",
"leaveGroup": "",
"listsBtn": "Listas",
"loadingTor": "",
"localeDe": "",
@ -95,6 +97,7 @@
"newBulletinLabel": "Novo Boletim",
"newConnectionPaneTitle": "",
"newGroupBtn": "Criar novo grupo",
"newPassword": "",
"newProfile": "",
"noPasswordWarning": "",
"password": "",
@ -116,6 +119,7 @@
"puzzleGameBtn": "Jogo de Adivinhação",
"radioNoPassword": "",
"radioUsePassword": "",
"reallyLeaveThisGroupPrompt": "",
"rejectGroupBtn": "Recusar",
"saveBtn": "Salvar",
"savePeerHistory": "",
@ -153,6 +157,7 @@
"versionTor": "",
"viewGroupMembershipTooltip": "",
"viewServerInfo": "",
"yesLeave": "",
"yourDisplayName": "",
"yourProfiles": "",
"yourServers": "",

View File

@ -47,7 +47,7 @@ class _ContactsViewState extends State<ContactsView> {
width: 10,
),
Expanded(
child: Text("%1 » %2".replaceAll("%1", Provider.of<ProfileInfoState>(context).nickname).replaceAll("%2", "Contacts"),
child: Text("%1 » %2".replaceAll("%1", Provider.of<ProfileInfoState>(context).nickname).replaceAll("%2", AppLocalizations.of(context)!.titleManageContacts),
overflow: TextOverflow.ellipsis, style: TextStyle(color: Provider.of<Settings>(context).current().mainTextColor()))), //todo
])),
actions: [

View File

@ -141,7 +141,7 @@ class _GroupSettingsViewState extends State<GroupSettingsView> {
showAlertDialog(context);
},
icon: Icon(Icons.delete),
label: Text(AppLocalizations.of(context)!.deleteBtn),
label: Text(AppLocalizations.of(context)!.leaveGroup),
))
])
])))));
@ -166,7 +166,7 @@ class _GroupSettingsViewState extends State<GroupSettingsView> {
);
Widget continueButton = TextButton(
style: ButtonStyle(padding: MaterialStateProperty.all(EdgeInsets.all(20))),
child: Text(AppLocalizations.of(context)!.deleteProfileConfirmBtn),
child: Text(AppLocalizations.of(context)!.yesLeave),
onPressed: () {
var profileOnion = Provider.of<ContactInfoState>(context, listen: false).profileOnion;
var handle = Provider.of<ContactInfoState>(context, listen: false).onion;
@ -179,7 +179,7 @@ class _GroupSettingsViewState extends State<GroupSettingsView> {
// set up the AlertDialog
AlertDialog alert = AlertDialog(
title: Text(AppLocalizations.of(context)!.deleteProfileConfirmBtn),
title: Text(AppLocalizations.of(context)!.reallyLeaveThisGroupPrompt),
actions: [
cancelButton,
continueButton,

View File

@ -5,6 +5,7 @@ import 'package:provider/provider.dart';
import '../main.dart';
import '../model.dart';
import 'package:intl/intl.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import '../settings.dart';
@ -56,9 +57,8 @@ class InvitationBubbleState extends State<InvitationBubble> {
//todo: get group name?
messageStr = "You sent an invitation for " + (isGroup ? "a group" : Provider.of<MessageState>(context).message ?? "");
} else {
messageStr = (isGroup ? "You have been invited to join " + (Provider.of<MessageState>(context).inviteNick ?? "") : "This is a contact suggestion for:") +
"\n" +
(Provider.of<MessageState>(context).inviteTarget ?? "");
String joinGroup = AppLocalizations.of(context)!.inviteToGroup;
messageStr = (isGroup ? joinGroup + (Provider.of<MessageState>(context).inviteNick ?? "") : "This is a contact suggestion for:") + "\n" + (Provider.of<MessageState>(context).inviteTarget ?? "");
}
var wdgMessage = Center(
widthFactor: 1,
@ -85,9 +85,13 @@ class InvitationBubbleState extends State<InvitationBubble> {
textAlign: fromMe ? TextAlign.right : TextAlign.left),
!fromMe
? SizedBox(width: 1, height: 1)
: Provider.of<MessageState>(context).ackd
? Icon(Icons.check_circle_outline, color: Provider.of<Settings>(context).theme.messageFromMeTextColor(), size: 12)
: Icon(Icons.hourglass_bottom_outlined, color: Provider.of<Settings>(context).theme.messageFromMeTextColor(), size: 12)
: Padding(
padding: EdgeInsets.all(1.0),
child: Provider.of<MessageState>(context).ackd == true
? Icon(Icons.check_circle_outline, color: Provider.of<Settings>(context).theme.messageFromMeTextColor(), size: 16)
: (Provider.of<MessageState>(context).error == true
? Icon(Icons.error_outline, color: Provider.of<Settings>(context).theme.messageFromMeTextColor(), size: 16)
: Icon(Icons.hourglass_bottom_outlined, color: Provider.of<Settings>(context).theme.messageFromMeTextColor(), size: 16)))
],
));
} else if (isAccepted) {

View File

@ -1,3 +1,4 @@
import 'package:cwtch/widgets/malformedbubble.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import '../model.dart';
@ -63,23 +64,32 @@ class MessageBubbleState extends State<MessageBubble> {
textAlign: fromMe ? TextAlign.right : TextAlign.left),
!fromMe
? SizedBox(width: 1, height: 1)
: Provider.of<MessageState>(context).ackd == true
? Icon(Icons.check_circle_outline, color: Provider.of<Settings>(context).theme.messageFromMeTextColor(), size: 12)
: (Provider.of<MessageState>(context).error == true
? Icon(Icons.error_outline, color: Provider.of<Settings>(context).theme.messageFromMeTextColor(), size: 12)
: Icon(Icons.hourglass_bottom_outlined, color: Provider.of<Settings>(context).theme.messageFromMeTextColor(), size: 12))
: Padding(
padding: EdgeInsets.all(1.0),
child: Provider.of<MessageState>(context).ackd == true
? Icon(Icons.check_circle_outline, color: Provider.of<Settings>(context).theme.messageFromMeTextColor(), size: 16)
: (Provider.of<MessageState>(context).error == true
? Icon(Icons.error_outline, color: Provider.of<Settings>(context).theme.messageFromMeTextColor(), size: 16)
: Icon(Icons.hourglass_bottom_outlined, color: Provider.of<Settings>(context).theme.messageFromMeTextColor(), size: 16)))
],
));
var error = Provider.of<MessageState>(context).error;
return LayoutBuilder(builder: (context, constraints) {
//print(constraints.toString()+", "+constraints.maxWidth.toString());
return RepaintBoundary(
child: Container(
child: Container(
decoration: BoxDecoration(
color: fromMe ? Provider.of<Settings>(context).theme.messageFromMeBackgroundColor() : Provider.of<Settings>(context).theme.messageFromOtherBackgroundColor(),
color: error
? malformedColor
: (fromMe ? Provider.of<Settings>(context).theme.messageFromMeBackgroundColor() : Provider.of<Settings>(context).theme.messageFromOtherBackgroundColor()),
border: Border.all(
color: fromMe ? Provider.of<Settings>(context).theme.messageFromMeBackgroundColor() : Provider.of<Settings>(context).theme.messageFromOtherBackgroundColor(), width: 1),
color: error
? malformedColor
: (fromMe ? Provider.of<Settings>(context).theme.messageFromMeBackgroundColor() : Provider.of<Settings>(context).theme.messageFromOtherBackgroundColor()),
width: 1),
borderRadius: BorderRadius.only(
topLeft: Radius.circular(borderRadiousEh),
topRight: Radius.circular(borderRadiousEh),

View File

@ -14,7 +14,7 @@ packages:
name: args
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
version: "2.1.1"
async:
dependency: transitive
description:
@ -77,7 +77,7 @@ packages:
name: dbus
url: "https://pub.dartlang.org"
source: hosted
version: "0.5.0"
version: "0.5.1"
desktop_notifications:
dependency: "direct main"
description:
@ -142,7 +142,7 @@ packages:
name: glob
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.1"
version: "1.2.0"
http:
dependency: transitive
description:
@ -199,6 +199,20 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0"
node_interop:
dependency: transitive
description:
name: node_interop
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.1"
node_io:
dependency: transitive
description:
name: node_io
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.1"
package_info_plus:
dependency: "direct main"
description:

View File

@ -15,7 +15,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.0.0+1
version: 1.0.0+3
environment:
sdk: ">=2.12.0 <3.0.0"