Compare commits

..

1 commit

Author SHA1 Message Date
Maxim Logaev f15fb7c4f1 Bump flatpak runtime version to 46
Signed-off-by: Maxim Logaev <maxlogaev@proton.me>
2024-06-10 01:30:07 +03:00
12 changed files with 77 additions and 200 deletions

View file

@ -32,9 +32,9 @@ OS support
------------
* Linux (flatpaks are targeted for Ubuntu 22.04+)
* Windows 10\11
* MacOS via [brew](https://brew.sh/) (very experimental, see below)
* MacOS via [brew](https://brew.sh/) (very experimental!)
Officially, we support only x86_64 architecture. Whilst you may be able to compile this code for ARM-based platforms (like Pinephone or MacOS), there's zero guarantees that it'll compile or function properly, as we don't have the hardware and the time to test it out.
We only support 64 bit platforms.
Installation (prebuilt packages & AUR)
------------

View file

@ -60,11 +60,7 @@
"buildsystem": "cmake-ninja",
"builddir": true,
"config-opts": [
"-DSOUP_VERSION=3",
"-DNO_DEBUG=yes",
"-DCMAKE_BUILD_TYPE=Release",
"-DENABLED_PLUGINS=notification-sound",
"-DPLUGIN_RTP_WEBRTC_AUDIO_PROCESSING=OFF"
"-DSOUP_VERSION=3"
],
"cleanup": [
"/include",

View file

@ -46,15 +46,6 @@ public class FileManager : StreamInteractionModule, Object {
return ret;
}
private string sanitize_filename(string filename) {
#if _WIN32
GLib.Regex regex = new GLib.Regex("[<>:\"/\\|?*]");
#else
GLib.Regex regex = new GLib.Regex("[/]");
#endif
return regex.replace(filename, -1, 0, "_");
}
public async void send_file(File file, Conversation conversation) {
FileTransfer file_transfer = new FileTransfer();
file_transfer.account = conversation.account;
@ -252,7 +243,7 @@ public class FileManager : StreamInteractionModule, Object {
}
// Save file
string filename = Random.next_int().to_string("%x") + "_" + sanitize_filename(file_transfer.file_name);
string filename = Random.next_int().to_string("%x") + "_" + file_transfer.file_name;
File file = File.new_for_path(Path.build_filename(get_storage_dir(), filename));
OutputStream os = file.create(FileCreateFlags.REPLACE_DESTINATION);
@ -341,7 +332,7 @@ public class FileManager : StreamInteractionModule, Object {
private async void save_file(FileTransfer file_transfer) throws FileSendError {
try {
string filename = Random.next_int().to_string("%x") + "_" + sanitize_filename(file_transfer.file_name);
string filename = Random.next_int().to_string("%x") + "_" + file_transfer.file_name;
File file = File.new_for_path(Path.build_filename(get_storage_dir(), filename));
OutputStream os = file.create(FileCreateFlags.REPLACE_DESTINATION);
yield os.splice_async(file_transfer.input_stream, OutputStreamSpliceFlags.CLOSE_SOURCE|OutputStreamSpliceFlags.CLOSE_TARGET);

View file

@ -563,7 +563,7 @@ msgstr "Уведомления"
#: main/src/ui/contact_details/settings_provider.vala:55
msgid "Pin conversation"
msgstr "Закрепить беседу"
msgstr ""
#: main/src/ui/contact_details/settings_provider.vala:55
msgid "Pins the conversation to the top of the conversation list"
@ -826,16 +826,16 @@ msgstr "Прочтите %s, чтобы узнать о процессе авт
#: main/src/ui/conversation_content_view/message_widget.vala:213
msgid "Edit message"
msgstr "Редактировать сообщение"
msgstr ""
#: main/src/ui/conversation_content_view/reactions_widget.vala:102
msgid "You"
msgstr "Вы"
msgstr ""
#: main/src/ui/conversation_content_view/reactions_widget.vala:128
#: main/src/ui/conversation_content_view/item_actions.vala:8
msgid "Add reaction"
msgstr "Добавить реакцию"
msgstr ""
#: main/src/ui/conversation_content_view/file_image_widget.vala:53
#: main/src/ui/conversation_content_view/file_default_widget.vala:57
@ -947,7 +947,7 @@ msgstr "несколько секунд"
#: main/src/ui/conversation_content_view/conversation_item_skeleton.vala:191
msgid "Delivered"
msgstr "Доставленo"
msgstr ""
#: main/src/ui/conversation_content_view/conversation_item_skeleton.vala:195
msgid "Read"
@ -959,15 +959,15 @@ msgstr "Этот контакт хочет добавить вас в свой
#: main/src/ui/conversation_content_view/item_actions.vala:21
msgid "This conversation does not support reactions."
msgstr "Этот разговор не поддерживает реакции."
msgstr ""
#: main/src/ui/conversation_content_view/item_actions.vala:33
msgid "Reply"
msgstr "Ответить"
msgstr ""
#: main/src/ui/conversation_content_view/item_actions.vala:43
msgid "This conversation does not support replies."
msgstr "Этот разговор не поддерживает ответы"
msgstr ""
#: main/src/ui/conversation_content_view/file_default_widget.vala:64
#, c-format
@ -1006,7 +1006,7 @@ msgstr "Тут пустовато"
#: main/data/unified_main_content.ui:47
msgid "Click + to start a chat or join a channel"
msgstr "Нажмите +, чтобы начать чат или присоединиться к каналу"
msgstr ""
#: main/data/add_conversation/conference_details_fragment.ui:20
#: main/data/add_conversation/add_groupchat_dialog.ui:40

View file

@ -73,9 +73,6 @@ public class FileImageWidget : Box {
image_overlay_toolbar.visible = false;
});
// Set tooltip to display the file name on hover
image.set_tooltip_text(file_name);
this.append(overlay);
}
}

View file

@ -90,8 +90,7 @@ public class FileWidget : SizeRequestBox {
private async void update_widget() {
if (show_image() && state != State.IMAGE
&& file_transfer.state == FileTransfer.State.COMPLETE
&& file_transfer.get_file().query_exists()) {
&& file_transfer.state == FileTransfer.State.COMPLETE) {
var content_bak = content;
FileImageWidget file_image_widget = null;
@ -110,8 +109,7 @@ public class FileWidget : SizeRequestBox {
} catch (Error e) { }
}
if (state != State.DEFAULT ||
(file_transfer.state == FileTransfer.State.COMPLETE && !file_transfer.get_file().query_exists())) {
if (state != State.DEFAULT) {
if (content != null) this.remove(content);
FileDefaultWidget default_file_widget = new FileDefaultWidget();
default_widget_controller = new FileDefaultWidgetController(default_file_widget);
@ -178,16 +176,10 @@ public class FileWidgetController : Object {
}
private void open_file() {
if (file_transfer.get_file().query_exists()) {
try {
Dino.Util.launch_default_for_uri(file_transfer.get_file().get_uri());
} catch (Error err) {
warning("Failed to open %s - %s", file_transfer.get_file().get_uri(), err.message);
}
} else {
warning("File %s does not exist", file_transfer.get_file().get_uri());
file_transfer.state = FileTransfer.State.NOT_STARTED;
widget.activate_action("file.download", null);
try{
Dino.Util.launch_default_for_uri(file_transfer.get_file().get_uri());
} catch (Error err) {
warning("Failed to open %s - %s", file_transfer.get_file().get_uri(), err.message);
}
}
@ -252,12 +244,8 @@ public class FileDefaultWidgetController : Object {
private void update_file_info() {
state = file_transfer.state;
if (state == FileTransfer.State.COMPLETE && !file_transfer.get_file().query_exists()) {
state = FileTransfer.State.NOT_STARTED;
file_transfer.state = FileTransfer.State.NOT_STARTED;
}
widget.update_file_info(file_transfer.mime_type, file_transfer.transferred_bytes,
file_transfer.direction, state, file_transfer.size);
file_transfer.direction, file_transfer.state, file_transfer.size);
}
private void on_clicked() {
@ -266,11 +254,10 @@ public class FileDefaultWidgetController : Object {
widget.activate_action("file.open", null);
break;
case FileTransfer.State.NOT_STARTED:
case FileTransfer.State.FAILED:
widget.activate_action("file.download", null);
break;
default:
// Clicking doesn't do anything in IN_PROGRESS state
// Clicking doesn't do anything in FAILED and IN_PROGRESS states
break;
}
}

View file

@ -197,7 +197,6 @@ public class Dialog : Gtk.Dialog {
}
private void populate_grid_data(Account account) {
active_switch.sensitive = false;
active_switch.state_set.disconnect(change_account_state);
picture.model = new ViewModel.CompatAvatarPictureModel(stream_interactor).add_participant(new Conversation(account.bare_jid, account, Conversation.Type.CHAT), account.bare_jid);
@ -228,14 +227,11 @@ public class Dialog : Gtk.Dialog {
ConnectionManager.ConnectionState state = stream_interactor.connection_manager.get_state(account);
switch (state) {
case ConnectionManager.ConnectionState.CONNECTING:
active_switch.sensitive = false;
state_label.label = _("Connecting…"); break;
case ConnectionManager.ConnectionState.CONNECTED:
active_switch.sensitive = true;
password_change_btn.sensitive = true;
state_label.label = _("Connected"); break;
case ConnectionManager.ConnectionState.DISCONNECTED:
active_switch.sensitive = true;
password_change_btn.sensitive = false;
state_label.label = _("Disconnected"); break;
}

View file

@ -1,10 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Project-Id-Version: dino-openpgp-0.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-06-09 22:16+0200\n"
"PO-Revision-Date: 2024-06-09 22:39+0200\n"
"Last-Translator: eerielili \n"
"POT-Creation-Date: 2023-02-07 21:31+0100\n"
"PO-Revision-Date: 2020-04-16 20:11+0000\n"
"Language-Team: German <https://hosted.weblate.org/projects/dino/plugin-"
"openpgp/de/>\n"
"Language: de\n"
@ -12,11 +11,11 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Poedit 3.4.2\n"
"X-Generator: Weblate 4.0.1-dev\n"
#: plugins/openpgp/src/account_settings_entry.vala:68
#: plugins/openpgp/src/account_settings_entry.vala:72
#: plugins/openpgp/src/account_settings_entry.vala:113
#: plugins/openpgp/src/account_settings_entry.vala:101
msgid "Key publishing disabled"
msgstr "Schlüsselveröffentlichung deaktiviert"
@ -25,40 +24,18 @@ msgid "Error in GnuPG"
msgstr "Fehler in GnuPG"
#: plugins/openpgp/src/account_settings_entry.vala:72
msgid ""
"No keys available. Generate one or check if your keys aren't expired or "
"revoked!"
msgstr ""
"Keine Schlüssel vorhanden. Erstellen Sie einen oder prüfen Sie,"
"ob Ihre Schlüssel nicht abgelaufen sind oder widerrufen!"
msgid "No keys available. Generate one!"
msgstr "Keine Schlüssel vorhanden. Erzeuge einen!"
#: plugins/openpgp/src/account_settings_entry.vala:95
msgid "expired!"
msgstr "abgelaufen"
#: plugins/openpgp/src/account_settings_entry.vala:95
msgid "revoked!"
msgstr "widerrufen!"
#: plugins/openpgp/src/account_settings_entry.vala:96
msgid "Attention required!"
msgstr "Achtung!"
#: plugins/openpgp/src/account_settings_entry.vala:96
#, c-format
msgid "Your key %s is %s"
msgstr "Ihr Schlüssel %s is %s"
#: plugins/openpgp/src/account_settings_entry.vala:113
#: plugins/openpgp/src/account_settings_entry.vala:101
msgid "Select key"
msgstr "Wähle einen Schlüssel"
#: plugins/openpgp/src/account_settings_entry.vala:126
#: plugins/openpgp/src/account_settings_entry.vala:114
msgid "Loading…"
msgstr "Lade…"
#: plugins/openpgp/src/account_settings_entry.vala:126
#: plugins/openpgp/src/account_settings_entry.vala:114
msgid "Querying GnuPG"
msgstr "Frage GnuPG ab"
@ -69,3 +46,6 @@ msgstr "Schlüssel nicht im Schlüsselbund"
#: plugins/openpgp/src/contact_details_provider.vala:30
msgid "Encryption"
msgstr "Verschlüsselung"
#~ msgid "OpenPGP"
#~ msgstr "OpenPGP"

View file

@ -1,68 +1,52 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION+\n"
"POT-Creation-Date: 2024-06-09 22:16+0200\n"
"PO-Revision-Date: 2024-06-09 22:18+0200\n"
"Last-Translator: \n"
"Language-Team: Dino+\n"
"Language: en\n"
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-02-07 21:31+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.4.2\n"
"X-Poedit-Basepath: ../src\n"
"X-Poedit-KeywordsList: _(\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-SearchPath-0: .\n"
#: account_settings_entry.vala:68 account_settings_entry.vala:72
#: account_settings_entry.vala:113
#: plugins/openpgp/src/account_settings_entry.vala:68
#: plugins/openpgp/src/account_settings_entry.vala:72
#: plugins/openpgp/src/account_settings_entry.vala:101
msgid "Key publishing disabled"
msgstr ""
#: account_settings_entry.vala:68
#: plugins/openpgp/src/account_settings_entry.vala:68
msgid "Error in GnuPG"
msgstr ""
#: account_settings_entry.vala:72
msgid ""
"No keys available. Generate one or check if your keys aren't expired or "
"revoked!"
#: plugins/openpgp/src/account_settings_entry.vala:72
msgid "No keys available. Generate one!"
msgstr ""
#: account_settings_entry.vala:95
msgid "expired!"
msgstr ""
#: account_settings_entry.vala:95
msgid "revoked!"
msgstr ""
#: account_settings_entry.vala:96
msgid "Attention required!"
msgstr ""
#: account_settings_entry.vala:96
#, c-format
msgid "Your key %s is %s"
msgstr ""
#: account_settings_entry.vala:113
#: plugins/openpgp/src/account_settings_entry.vala:101
msgid "Select key"
msgstr ""
#: account_settings_entry.vala:126
#: plugins/openpgp/src/account_settings_entry.vala:114
msgid "Loading…"
msgstr ""
#: account_settings_entry.vala:126
#: plugins/openpgp/src/account_settings_entry.vala:114
msgid "Querying GnuPG"
msgstr ""
#: contact_details_provider.vala:28
#: plugins/openpgp/src/contact_details_provider.vala:28
msgid "Key not in keychain"
msgstr ""
#: contact_details_provider.vala:30
#: plugins/openpgp/src/contact_details_provider.vala:30
msgid "Encryption"
msgstr ""

View file

@ -7,9 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-06-09 22:16+0200\n"
"PO-Revision-Date: 2024-06-09 22:22+0200\n"
"Last-Translator: \n"
"POT-Creation-Date: 2023-02-07 21:31+0100\n"
"PO-Revision-Date: 2020-11-12 17:21+0000\n"
"Language-Team: French <https://hosted.weblate.org/projects/dino/plugin-"
"openpgp/fr/>\n"
"Language: fr\n"
@ -17,11 +16,11 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Poedit 3.4.2\n"
"X-Generator: Weblate 4.4-dev\n"
#: plugins/openpgp/src/account_settings_entry.vala:68
#: plugins/openpgp/src/account_settings_entry.vala:72
#: plugins/openpgp/src/account_settings_entry.vala:113
#: plugins/openpgp/src/account_settings_entry.vala:101
msgid "Key publishing disabled"
msgstr "La publication des clés est désactivée"
@ -30,39 +29,18 @@ msgid "Error in GnuPG"
msgstr "Erreur dans GnuPG"
#: plugins/openpgp/src/account_settings_entry.vala:72
msgid ""
"No keys available. Generate one or check if your keys aren't expired or "
"revoked!"
msgstr ""
"Pas de clés disponibles. Générez-en une nouvelle ou vérifier si vos "
"clés ne seraient pas expirées ou révoquées!"
msgid "No keys available. Generate one!"
msgstr "Aucune clé nest disponible. Générez-en une!"
#: plugins/openpgp/src/account_settings_entry.vala:95
msgid "expired!"
msgstr "expirée!"
#: plugins/openpgp/src/account_settings_entry.vala:95
msgid "revoked!"
msgstr "révoquée!"
#: plugins/openpgp/src/account_settings_entry.vala:96
msgid "Attention required!"
msgstr "Attention requise!"
#: plugins/openpgp/src/account_settings_entry.vala:96
#, c-format
msgid "Your key %s is %s"
msgstr "Votre clé %s est %s"
#: plugins/openpgp/src/account_settings_entry.vala:113
#: plugins/openpgp/src/account_settings_entry.vala:101
msgid "Select key"
msgstr "Choix dune clé"
#: plugins/openpgp/src/account_settings_entry.vala:126
#: plugins/openpgp/src/account_settings_entry.vala:114
msgid "Loading…"
msgstr "Chargement…"
#: plugins/openpgp/src/account_settings_entry.vala:126
#: plugins/openpgp/src/account_settings_entry.vala:114
msgid "Querying GnuPG"
msgstr "Interrogation de GnuPG"

View file

@ -7,9 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-06-09 22:16+0200\n"
"PO-Revision-Date: 2024-06-09 22:39+0200\n"
"Last-Translator: eerielili\n"
"POT-Creation-Date: 2023-02-07 21:31+0100\n"
"PO-Revision-Date: 2020-06-02 11:41+0000\n"
"Language-Team: Russian <https://hosted.weblate.org/projects/dino/plugin-"
"openpgp/ru/>\n"
"Language: ru\n"
@ -18,11 +17,11 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Poedit 3.4.2\n"
"X-Generator: Weblate 4.1-dev\n"
#: plugins/openpgp/src/account_settings_entry.vala:68
#: plugins/openpgp/src/account_settings_entry.vala:72
#: plugins/openpgp/src/account_settings_entry.vala:113
#: plugins/openpgp/src/account_settings_entry.vala:101
msgid "Key publishing disabled"
msgstr "Публикация ключа отключена"
@ -31,37 +30,18 @@ msgid "Error in GnuPG"
msgstr "Ошибка в GnuPG"
#: plugins/openpgp/src/account_settings_entry.vala:72
msgid ""
"No keys available. Generate one or check if your keys aren't expired or "
"revoked!"
msgid "No keys available. Generate one!"
msgstr "Нет доступных ключей. Создайте как минимум один, либо проверьте что уже существующие (ранее созданные) ключи не были отозваны или срок их действия не закончился!"
#: plugins/openpgp/src/account_settings_entry.vala:95
msgid "expired!"
msgstr "истёк!"
#: plugins/openpgp/src/account_settings_entry.vala:95
msgid "revoked!"
msgstr "отозван!"
#: plugins/openpgp/src/account_settings_entry.vala:96
msgid "Attention required!"
msgstr "внимание!"
#: plugins/openpgp/src/account_settings_entry.vala:96
#, c-format
msgid "Your key %s is %s"
msgstr "Ваш ключ %s %s"
#: plugins/openpgp/src/account_settings_entry.vala:113
#: plugins/openpgp/src/account_settings_entry.vala:101
msgid "Select key"
msgstr "Выбрать ключ"
#: plugins/openpgp/src/account_settings_entry.vala:126
#: plugins/openpgp/src/account_settings_entry.vala:114
msgid "Loading…"
msgstr "Загрузка…"
#: plugins/openpgp/src/account_settings_entry.vala:126
#: plugins/openpgp/src/account_settings_entry.vala:114
msgid "Querying GnuPG"
msgstr "Запрос GnuPG"

View file

@ -69,7 +69,7 @@ public class AccountSettingsEntry : Plugins.AccountSettingsEntry {
return;
}
if (keys.size == 0) {
label.set_markup(build_markup_string(_("Key publishing disabled"), _("No keys available. Generate one or check if your keys aren't expired or revoked!")));
label.set_markup(build_markup_string(_("Key publishing disabled"), _("No keys available. Generate one!")));
return;
}
@ -88,18 +88,6 @@ public class AccountSettingsEntry : Plugins.AccountSettingsEntry {
set_label_active(selected);
combobox.changed.connect(key_changed);
if (account_key != null) {
try {
GPG.Key key_check = GPGHelper.get_public_key(account_key);
if(key_check.expired || key_check.revoked) {
string status_str = key_check.expired ? _("expired!") : _("revoked!");
label.set_markup(build_markup_string(_("Attention required!"), _("Your key %s is %s").printf("<span color='red'><b>"+ key_check.fpr +"</b></span>", status_str) ) );
}
}
catch {
debug("Coudn't check GPG key status.");
}
}
}
private void populate_list_store() {