diff --git a/NickvisionTubeConverter.GNOME/Blueprints/add_download_dialog.blp b/NickvisionTubeConverter.GNOME/Blueprints/add_download_dialog.blp index 8c5a4bc98..d7a815228 100644 --- a/NickvisionTubeConverter.GNOME/Blueprints/add_download_dialog.blp +++ b/NickvisionTubeConverter.GNOME/Blueprints/add_download_dialog.blp @@ -5,7 +5,7 @@ Adw.Window _root { width-request: 360; default-width: 420; modal: true; - resizable: false; + resizable: true; content: Gtk.Box { orientation: vertical; @@ -96,113 +96,109 @@ Adw.Window _root { orientation: vertical; spacing: 24; - Gtk.ScrolledWindow _scrolledWindow { - hscrollbar-policy: never; - propagate-natural-height: true; - child: Gtk.Box _downloadPage { - visible: false; - orientation: vertical; - hexpand: true; - margin-top: 12; - margin-bottom: 12; - spacing: 24; + Gtk.Box _downloadPage { + visible: false; + orientation: vertical; + hexpand: true; + margin-top: 12; + margin-bottom: 12; + spacing: 24; - Adw.PreferencesGroup { - margin-start: 24; - margin-end: 24; + Adw.PreferencesGroup { + margin-start: 24; + margin-end: 24; - Adw.ComboRow _fileTypeRow { - title: _("File Type"); - model: Gtk.StringList { - strings ["MP4", "WEBM", "MP3", "M4A", "OPUS", "FLAC", "WAV"] - }; - } + Adw.ComboRow _fileTypeRow { + title: _("File Type"); + model: Gtk.StringList { + strings ["MP4", "WEBM", "MP3", "M4A", "OPUS", "FLAC", "WAV"] + }; + } - Adw.ComboRow _qualityRow { - title: _("Quality"); - model: Gtk.StringList { - strings [""] - }; - } + Adw.ComboRow _qualityRow { + title: _("Quality"); + model: Gtk.StringList { + strings [""] + }; + } - Adw.ComboRow _audioLanguageRow { - title: _("Audio Language"); - visible: false; - } + Adw.ComboRow _audioLanguageRow { + title: _("Audio Language"); + visible: false; + } - Adw.ComboRow _subtitleRow { - title: _("Subtitle"); - model: Gtk.StringList { - strings [C_("Subtitle", "None"), "VTT", "SRT"] - }; - } + Adw.ComboRow _subtitleRow { + title: _("Subtitle"); + model: Gtk.StringList { + strings [C_("Subtitle", "None"), "VTT", "SRT"] + }; } + } - Adw.PreferencesGroup { - margin-start: 24; - margin-end: 24; + Adw.PreferencesGroup { + margin-start: 24; + margin-end: 24; - Adw.EntryRow _saveFolderRow { - title: _("Save Folder"); - editable: false; + Adw.EntryRow _saveFolderRow { + title: _("Save Folder"); + editable: false; - [suffix] - Gtk.Button _selectSaveFolderButton { - valign: center; - icon-name: "folder-open-symbolic"; - tooltip-text: _("Select Save Folder"); + [suffix] + Gtk.Button _selectSaveFolderButton { + valign: center; + icon-name: "folder-open-symbolic"; + tooltip-text: _("Select Save Folder"); - styles ["flat"] - } + styles ["flat"] } + } - Adw.ActionRow _openAdvancedRow { - title: _("Advanced Options"); - activatable-widget: _openAdvancedImage; + Adw.ActionRow _openAdvancedRow { + title: _("Advanced Options"); + activatable-widget: _openAdvancedImage; - [suffix] - Gtk.Image _openAdvancedImage { - valign: center; - icon-name: "go-next-symbolic"; - } + [suffix] + Gtk.Image _openAdvancedImage { + valign: center; + icon-name: "go-next-symbolic"; } } + } - Adw.PreferencesGroup _mediaGroup { - visible: false; - margin-start: 24; - margin-end: 24; - } + Adw.PreferencesGroup _mediaGroup { + visible: false; + margin-start: 24; + margin-end: 24; + } - Adw.PreferencesGroup _openPlaylistGroup { - visible: false; - margin-start: 24; - margin-end: 24; - - Adw.ActionRow _openPlaylistRow { - subtitle: _("Select items to download or change file names."); - subtitle-lines: 1; - activatable-widget: _openPlaylistImage; - - [suffix] - Gtk.Image _openPlaylistImage { - valign: center; - icon-name: "go-next-symbolic"; - } + Adw.PreferencesGroup _openPlaylistGroup { + visible: false; + margin-start: 24; + margin-end: 24; + + Adw.ActionRow _openPlaylistRow { + subtitle: _("Select items to download or change file names."); + subtitle-lines: 1; + activatable-widget: _openPlaylistImage; + + [suffix] + Gtk.Image _openPlaylistImage { + valign: center; + icon-name: "go-next-symbolic"; } + } - Adw.ActionRow _numberTitlesRow { - title: _("Number Titles"); - activatable-widget: _numberTitlesSwitch; + Adw.ActionRow _numberTitlesRow { + title: _("Number Titles"); + activatable-widget: _numberTitlesSwitch; - [suffix] - Gtk.Switch _numberTitlesSwitch { - valign: center; - active: false; - } + [suffix] + Gtk.Switch _numberTitlesSwitch { + valign: center; + active: false; } } - }; + } } Gtk.Button _addDownloadButton { diff --git a/NickvisionTubeConverter.GNOME/Blueprints/keyring_dialog.blp b/NickvisionTubeConverter.GNOME/Blueprints/keyring_dialog.blp index 9f3de4239..276aba37c 100644 --- a/NickvisionTubeConverter.GNOME/Blueprints/keyring_dialog.blp +++ b/NickvisionTubeConverter.GNOME/Blueprints/keyring_dialog.blp @@ -65,50 +65,6 @@ Adw.Window _root { }; } - Adw.ViewStackPage { - name: "password"; - child: Gtk.Box { - orientation: vertical; - spacing: 24; - - Adw.PreferencesGroup { - margin-top: 12; - margin-start: 24; - margin-end: 24; - - Adw.PasswordEntryRow _newPasswordEntry { - title: _("New Password"); - activates-default: true; - } - - Adw.PasswordEntryRow _confirmPasswordEntry { - title: _("Confirm Password"); - activates-default: true; - } - } - - Gtk.Label { - margin-start: 24; - margin-end: 24; - label: _("If the password is lost, there is no way to restore the keyring!"); - - styles ["warning"] - } - - Gtk.Button _setPasswordButton { - halign: center; - valign: end; - vexpand: true; - margin-top: 24; - margin-bottom: 36; - sensitive: false; - label: _("Continue"); - - styles ["pill", "suggested-action"] - } - }; - } - Adw.ViewStackPage { name: "home"; child: Gtk.Box _mainBox { diff --git a/NickvisionTubeConverter.GNOME/Blueprints/password_dialog.blp b/NickvisionTubeConverter.GNOME/Blueprints/password_dialog.blp index 77a799396..a6241fa12 100644 --- a/NickvisionTubeConverter.GNOME/Blueprints/password_dialog.blp +++ b/NickvisionTubeConverter.GNOME/Blueprints/password_dialog.blp @@ -11,6 +11,19 @@ Adw.Window _root { Adw.HeaderBar { title-widget: Gtk.Label {}; + + [start] + Gtk.Button _migrateButton { + tooltip-text: _("Migrate to Secret-Secured Keyring"); + + Adw.ButtonContent { + icon-name: "update-symbolic"; + label: _("Migrate Keyring"); + } + + styles ["flat"] + } + styles ["flat"] } diff --git a/NickvisionTubeConverter.GNOME/Controls/PasswordDialog.cs b/NickvisionTubeConverter.GNOME/Controls/PasswordDialog.cs index 73c8d292a..12d77edf1 100644 --- a/NickvisionTubeConverter.GNOME/Controls/PasswordDialog.cs +++ b/NickvisionTubeConverter.GNOME/Controls/PasswordDialog.cs @@ -9,7 +9,8 @@ namespace NickvisionTubeConverter.GNOME.Controls; public partial class PasswordDialog : Adw.Window { private bool _unlocked; - + + [Gtk.Connect] private readonly Gtk.Button _migrateButton; [Gtk.Connect] private readonly Gtk.Label _titleLabel; [Gtk.Connect] private readonly Adw.PasswordEntryRow _passwordEntry; [Gtk.Connect] private readonly Gtk.Button _skipButton; @@ -34,6 +35,7 @@ private PasswordDialog(Gtk.Builder builder, Gtk.Window parent, string title, Tas builder.Connect(this); //Dialog Settings SetTransientFor(parent); + _migrateButton.OnClicked += (sender, e) => Gtk.Functions.ShowUri(this, Help.GetHelpURL("keyring"), 0); _titleLabel.SetLabel(title); _skipButton.OnClicked += (sender, e) => { diff --git a/NickvisionTubeConverter.GNOME/NickvisionTubeConverter.GNOME.csproj b/NickvisionTubeConverter.GNOME/NickvisionTubeConverter.GNOME.csproj index de9ee309c..8e1d8267f 100644 --- a/NickvisionTubeConverter.GNOME/NickvisionTubeConverter.GNOME.csproj +++ b/NickvisionTubeConverter.GNOME/NickvisionTubeConverter.GNOME.csproj @@ -8,7 +8,7 @@ - + diff --git a/NickvisionTubeConverter.GNOME/Program.cs b/NickvisionTubeConverter.GNOME/Program.cs index 8d95c10a7..1303763a2 100644 --- a/NickvisionTubeConverter.GNOME/Program.cs +++ b/NickvisionTubeConverter.GNOME/Program.cs @@ -35,7 +35,8 @@ public Program(string[] args) _mainWindow = null; _mainWindowController = new MainWindowController(); _mainWindowController.AppInfo.Changelog = - @"* Updated translations (Thanks everyone on Weblate!)"; + @"* Parabolic will now use the system's credential manager (i.e. DBus Secret Service) for securing the Keyring. Please read the Keyring page in Help for information on migrating the old password-secured Keyring to the new secret-secured Keyring + * Updated translations (Thanks everyone on Weblate!)"; _application.OnActivate += OnActivate; if (File.Exists(Path.GetFullPath(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)) + "/org.nickvision.tubeconverter.gresource")) { diff --git a/NickvisionTubeConverter.GNOME/Resources/org.nickvision.tubeconverter.gresource.xml b/NickvisionTubeConverter.GNOME/Resources/org.nickvision.tubeconverter.gresource.xml index 05cd43ad8..090ba4dae 100644 --- a/NickvisionTubeConverter.GNOME/Resources/org.nickvision.tubeconverter.gresource.xml +++ b/NickvisionTubeConverter.GNOME/Resources/org.nickvision.tubeconverter.gresource.xml @@ -23,6 +23,7 @@ speedometer-symbolic.svg subtitles-symbolic.svg tag-outline-symbolic.svg + update-symbolic.svg wrench-wide-symbolic.svg diff --git a/NickvisionTubeConverter.GNOME/Resources/update-symbolic.svg b/NickvisionTubeConverter.GNOME/Resources/update-symbolic.svg new file mode 100644 index 000000000..a55f539ba --- /dev/null +++ b/NickvisionTubeConverter.GNOME/Resources/update-symbolic.svg @@ -0,0 +1,2 @@ + + diff --git a/NickvisionTubeConverter.GNOME/Views/AddDownloadDialog.cs b/NickvisionTubeConverter.GNOME/Views/AddDownloadDialog.cs index 61fbb3acc..a3ac48cbb 100644 --- a/NickvisionTubeConverter.GNOME/Views/AddDownloadDialog.cs +++ b/NickvisionTubeConverter.GNOME/Views/AddDownloadDialog.cs @@ -37,7 +37,6 @@ public partial class AddDownloadDialog : Adw.Window [Gtk.Connect] private readonly Gtk.Button _addDownloadButton; [Gtk.Connect] private readonly Gtk.Box _downloadPage; [Gtk.Connect] private readonly Gtk.Button _backButton; - [Gtk.Connect] private readonly Gtk.ScrolledWindow _scrolledWindow; [Gtk.Connect] private readonly Adw.ComboRow _fileTypeRow; [Gtk.Connect] private readonly Adw.ComboRow _qualityRow; [Gtk.Connect] private readonly Adw.ComboRow _audioLanguageRow; @@ -138,21 +137,6 @@ private AddDownloadDialog(Gtk.Builder builder, AddDownloadDialogController contr } } }; - var vadjustment = _scrolledWindow.GetVadjustment(); - vadjustment.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "page-size") - { - if (vadjustment.GetPageSize() < vadjustment.GetUpper()) - { - _scrolledWindow.AddCssClass("scrolled-window"); - } - else - { - _scrolledWindow.RemoveCssClass("scrolled-window"); - } - } - }; _fileTypeRow.OnNotify += (sender, e) => { if (e.Pspec.GetName() == "selected-item") diff --git a/NickvisionTubeConverter.GNOME/Views/KeyringDialog.cs b/NickvisionTubeConverter.GNOME/Views/KeyringDialog.cs index 007833cc6..107b57dc6 100644 --- a/NickvisionTubeConverter.GNOME/Views/KeyringDialog.cs +++ b/NickvisionTubeConverter.GNOME/Views/KeyringDialog.cs @@ -23,9 +23,6 @@ public partial class KeyringDialog : Adw.Window [Gtk.Connect] private readonly Adw.ViewStack _viewStack; [Gtk.Connect] private readonly Adw.StatusPage _disabledPage; [Gtk.Connect] private readonly Gtk.Button _enableKeyringButton; - [Gtk.Connect] private readonly Adw.EntryRow _newPasswordEntry; - [Gtk.Connect] private readonly Adw.EntryRow _confirmPasswordEntry; - [Gtk.Connect] private readonly Gtk.Button _setPasswordButton; [Gtk.Connect] private readonly Gtk.Box _mainBox; [Gtk.Connect] private readonly Adw.PreferencesGroup _credentialsGroup; [Gtk.Connect] private readonly Gtk.Button _addCredentialButton; @@ -61,38 +58,27 @@ private KeyringDialog(Gtk.Builder builder, KeyringDialogController controller, s SetIconName(_appID); //Build UI builder.Connect(this); - _enableKeyringButton.OnClicked += (sender, e) => + _enableKeyringButton.OnClicked += async (sender, e) => { - _titleLabel.SetVisible(true); - _titleLabel.SetLabel(_("Set Password")); - _viewStack.SetVisibleChildName("password"); - }; - _newPasswordEntry.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "text") + _enableKeyringButton.SetSensitive(false); + var success = await _controller.EnableKeyringAsync(); + _enableKeyringButton.SetSensitive(true); + if (success) { - ValidateNewPassword(); + await LoadHomePageAsync(); } - }; - _confirmPasswordEntry.OnNotify += (sender, e) => - { - if (e.Pspec.GetName() == "text") + else { - ValidateNewPassword(); + _toastOverlay.AddToast(Adw.Toast.New(_("Failed to enable keyring."))); } }; - _setPasswordButton.OnClicked += async (sender, e) => - { - _controller.EnableKeyring(_newPasswordEntry.GetText()); - await LoadHomePageAsync(); - }; _disableKeyringButton.OnClicked += (sender, e) => { _backButton.SetVisible(true); _titleLabel.SetVisible(false); _viewStack.SetVisibleChildName("disable"); }; - _confirmDisableKeyringButton.OnClicked += DisableKeyring; + _confirmDisableKeyringButton.OnClicked += async (sender, e) => await DisableKeyringAsync(); _backButton.OnClicked += async (sender, e) => await LoadHomePageAsync(); _addCredentialButton.OnClicked += (sender, e) => LoadAddCredentialPage(); _credentialAddButton.OnClicked += AddCredential; @@ -129,15 +115,6 @@ public async Task PresentAsync() } } - private void ValidateNewPassword() - { - _setPasswordButton.SetSensitive(false); - if (_newPasswordEntry.GetText() == _confirmPasswordEntry.GetText() && !string.IsNullOrEmpty(_newPasswordEntry.GetText())) - { - _setPasswordButton.SetSensitive(true); - } - } - /// /// Loads the Home page /// @@ -276,11 +253,11 @@ private void ResetKeyring(Adw.Banner sender, EventArgs e) closeDialog.SetCloseResponse("no"); closeDialog.AddResponse("yes", _("Yes")); closeDialog.SetResponseAppearance("yes", Adw.ResponseAppearance.Destructive); - closeDialog.OnResponse += (s, ex) => + closeDialog.OnResponse += async (s, ex) => { if (ex.Response == "yes") { - if (_controller.ResetKeyring()) + if (await _controller.ResetKeyringAsync()) { Close(); } @@ -297,11 +274,9 @@ private void ResetKeyring(Adw.Banner sender, EventArgs e) /// /// Occurs when the disable keyring button is clicked /// - /// Gtk.Button - /// EventArgs - private void DisableKeyring(Gtk.Button sender, EventArgs e) + private async Task DisableKeyringAsync() { - if (_controller.DisableKeyring()) + if (await _controller.DisableKeyringAsync()) { Close(); } diff --git a/NickvisionTubeConverter.GNOME/nuget-sources.json b/NickvisionTubeConverter.GNOME/nuget-sources.json index 01807a70f..9a8c2666c 100644 --- a/NickvisionTubeConverter.GNOME/nuget-sources.json +++ b/NickvisionTubeConverter.GNOME/nuget-sources.json @@ -1,4 +1,11 @@ [ + { + "type": "file", + "url": "https://api.nuget.org/v3-flatcontainer/ace4896.dbus.services.secrets/1.1.0/ace4896.dbus.services.secrets.1.1.0.nupkg", + "sha512": "f886b36f49c3bb651d4aeea8ed666e2dd362997b3af02cba3ed5c3866c0c06d55949ba4dafdf445c8778f2bba2fb0fd10a71fe5ecf531b2d02613e4d260950f3", + "dest": "nuget-sources", + "dest-filename": "ace4896.dbus.services.secrets.1.1.0.nupkg" + }, { "type": "file", "url": "https://api.nuget.org/v3-flatcontainer/gettext.net/1.8.7/gettext.net.1.8.7.nupkg", @@ -111,6 +118,13 @@ "dest": "nuget-sources", "dest-filename": "markdig.0.31.0.nupkg" }, + { + "type": "file", + "url": "https://api.nuget.org/v3-flatcontainer/meziantou.framework.win32.credentialmanager/1.4.2/meziantou.framework.win32.credentialmanager.1.4.2.nupkg", + "sha512": "75c861c9f4ea0eb3ec84f4dd6f369c57240975acc67f10d03913c969618f299adbc4e4be5d295db388d09a44b501c561f02f1aa78f2edea99f8cdefbafc2edfd", + "dest": "nuget-sources", + "dest-filename": "meziantou.framework.win32.credentialmanager.1.4.2.nupkg" + }, { "type": "file", "url": "https://api.nuget.org/v3-flatcontainer/microsoft.csharp/4.7.0/microsoft.csharp.4.7.0.nupkg", @@ -141,10 +155,10 @@ }, { "type": "file", - "url": "https://api.nuget.org/v3-flatcontainer/nickvision.aura/2023.8.4/nickvision.aura.2023.8.4.nupkg", - "sha512": "f652246b4130850edb01a3bd1c0f45e77a1e26574401505eb8010b9e736ad2f3502e22c5d8e26a1bd1edfad26d247fe85db8ab35b4475015fe213200ad71a6af", + "url": "https://api.nuget.org/v3-flatcontainer/nickvision.aura/2023.9.3/nickvision.aura.2023.9.3.nupkg", + "sha512": "4f2d37373baf8a86ab30ddb5aea90e0ce905cb660cc1978a10d59c422d5f501227bcdf492fa57bfe853eabb5fc6248ae20ab933ec1dd1d773bb54088f329a5ca", "dest": "nuget-sources", - "dest-filename": "nickvision.aura.2023.8.4.nupkg" + "dest-filename": "nickvision.aura.2023.9.3.nupkg" }, { "type": "file", @@ -202,6 +216,13 @@ "dest": "nuget-sources", "dest-filename": "system.io.4.3.0.nupkg" }, + { + "type": "file", + "url": "https://api.nuget.org/v3-flatcontainer/system.io.pipelines/6.0.0/system.io.pipelines.6.0.0.nupkg", + "sha512": "c5983b4510bc8ae4116133ffb9b280fe61d99d47ef52dd78e5bfd03e090901896d5d5fd738dae57006b971840a4d9422bded33ddefa5e927d75d309ef1f70dea", + "dest": "nuget-sources", + "dest-filename": "system.io.pipelines.6.0.0.nupkg" + }, { "type": "file", "url": "https://api.nuget.org/v3-flatcontainer/system.memory/4.5.3/system.memory.4.5.3.nupkg", @@ -265,6 +286,13 @@ "dest": "nuget-sources", "dest-filename": "tmds.dbus.0.15.0.nupkg" }, + { + "type": "file", + "url": "https://api.nuget.org/v3-flatcontainer/tmds.dbus.protocol/0.15.0/tmds.dbus.protocol.0.15.0.nupkg", + "sha512": "45958a88536d1daa769934986b3ac514cdc1104a936bc404dbdec550c958847e7408af621350c09fa51bc4b837fb88471ec6e6056c4aaa2cebf30f044cd834e9", + "dest": "nuget-sources", + "dest-filename": "tmds.dbus.protocol.0.15.0.nupkg" + }, { "type": "file", "url": "https://api.nuget.org/v3-flatcontainer/cake.tool/3.1.0/cake.tool.3.1.0.nupkg", diff --git a/NickvisionTubeConverter.Shared/Controllers/MainWindowController.cs b/NickvisionTubeConverter.Shared/Controllers/MainWindowController.cs index eb72c5693..4e4961b9f 100644 --- a/NickvisionTubeConverter.Shared/Controllers/MainWindowController.cs +++ b/NickvisionTubeConverter.Shared/Controllers/MainWindowController.cs @@ -22,10 +22,6 @@ public class MainWindowController : IDisposable private Keyring? _keyring; private NetworkMonitor? _netmon; - /// - /// Application's Aura - /// - public Aura Aura { get; init; } /// /// Gets the AppInfo object /// @@ -84,23 +80,26 @@ public MainWindowController() _disposed = false; _pythonThreadState = IntPtr.Zero; DownloadManager = new DownloadManager(5); - Aura = new Aura("org.nickvision.tubeconverter", "Nickvision Tube Converter", _("Parabolic"), _("Download web video and audio")); - if (Directory.Exists($"{Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)}{Path.DirectorySeparatorChar}Nickvision{Path.DirectorySeparatorChar}{AppInfo.Name}")) + Aura.Init("org.nickvision.tubeconverter", "Nickvision Tube Converter"); + if (Directory.Exists($"{UserDirectories.Config}{Path.DirectorySeparatorChar}Nickvision{Path.DirectorySeparatorChar}{AppInfo.Name}")) { - // Move or delete config files from older versions + // Move config files from older versions and delete old directory try { - Directory.Move($"{Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)}{Path.DirectorySeparatorChar}Nickvision{Path.DirectorySeparatorChar}{AppInfo.Name}", ConfigurationLoader.ConfigDir); - } - catch (IOException) - { - Directory.Delete($"{Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)}{Path.DirectorySeparatorChar}Nickvision{Path.DirectorySeparatorChar}{AppInfo.Name}", true); + foreach (var file in Directory.GetFiles($"{UserDirectories.Config}{Path.DirectorySeparatorChar}Nickvision{Path.DirectorySeparatorChar}{AppInfo.Name}")) + { + File.Move(file, $"{UserDirectories.ApplicationConfig}{Path.DirectorySeparatorChar}{Path.GetFileName(file)}"); + } } + catch (IOException) { } + Directory.Delete($"{UserDirectories.Config}{Path.DirectorySeparatorChar}Nickvision{Path.DirectorySeparatorChar}{AppInfo.Name}", true); } Aura.Active.SetConfig("config"); Configuration.Current.Saved += ConfigurationSaved; Aura.Active.SetConfig("downloadHistory"); - AppInfo.Version = "2023.9.0-next"; + AppInfo.Version = "2023.9.0-beta1"; + AppInfo.ShortName = _("Parabolic"); + AppInfo.Description = _("Download web video and audio"); AppInfo.SourceRepo = new Uri("https://github.com/NickvisionApps/Parabolic"); AppInfo.IssueTracker = new Uri("https://github.com/NickvisionApps/Parabolic/issues/new"); AppInfo.SupportUrl = new Uri("https://github.com/NickvisionApps/Parabolic/discussions"); @@ -201,6 +200,7 @@ public async Task StartupAsync() //Setup Keyring if(Keyring.Exists(AppInfo.ID)) { + _keyring = await Keyring.AccessAsync(AppInfo.ID); while(_keyring == null) { var res = await KeyringLoginAsync!(_("Unlock Keyring")); @@ -208,7 +208,7 @@ public async Task StartupAsync() { break; } - _keyring = Keyring.Access(AppInfo.ID, res.Password); + _keyring = await Keyring.AccessAsync(AppInfo.ID, res.Password); } } //Check Network diff --git a/NickvisionTubeConverter.Shared/Docs/html/C/keyring.html b/NickvisionTubeConverter.Shared/Docs/html/C/keyring.html index c8b2b7241..7439807e3 100644 --- a/NickvisionTubeConverter.Shared/Docs/html/C/keyring.html +++ b/NickvisionTubeConverter.Shared/Docs/html/C/keyring.html @@ -17,55 +17,46 @@

Keyring

-
-

This page explains all options for using the Keyring in Parabolic.

-
-
Backend
-
-

The Keyring feature is backed by the Nickvision.Keyring library.

-

This library uses SQLCipher to securley store credentials in a platform independent manner.

-
-
Enabling The Keyring
-
-

When the Keyring is enabled, the user will be asked to enter a password to encrypt the Keyring.

-

There is no way to recover the Keyring password if lost.

-

This password will be used to unlock the Keyring in the future.

-
- - - - - - - - - - - - - -
-

If the Keyring password is lost, the user will be unable to use this feature unless the Keyring database file is deleted.

-

The Keyring file is stored in $CONFIG/Nickvision/Nickvision Parabolic/tubeconverter.nring

-
-
-
-
Disabling The Keyring
-
-

When the Keyring is disabled, the backing nring database is destroyed and all credentials stored are erased.

-

If the Keyring is re-enabled, a brand new database file will be created and the user will be prompted to enter a password again.

-
-
Storing a Credential
-
+

This page explains all options for using the Keyring in Parabolic.

+
+

Backend

+
+

The Keyring feature is backed by the Nickvision.Aura library.

+

This library uses SQLCipher to securely store credentials in a platform independent manner.

+

The library will use you system's credential manager (i.e. libsecret on Linux and Windows Credential Manager on Windows) for securing the Keyring.

+
+
+

Storing a Credential

+

Here are the fields that can be stored in a credential:

Name: The name of the credential

URL (optional): The URL of the credential

Username (optional if password is not empty): The username of the credential

Password (optional if username is not empty): The password of the credential

-
-
+
+
+

Migrating from Password-Secured Keyring to Secret-Secured Keyring

+
+

This section applies to users who have enabled a Keyring in Parabolic (in versions before V2023.9.0) and secured it with a password. Starting with version 2023.9.0, Parabolic uses the system's credential manager to generate a random password (secret) to secure the Keyring instead of asking for a user to provide one. By using the system credential manager, Parabolic can also automatically unlock the Keyring at startup without user interaction.

+

If you have a password-secured Keyring from before version 2023.9.0, you can continue to use it in new versions of Parabolic without issue, but you will still need to provide the password everytime the application starts.

+

Follow the rest of this section if you'd like to migrate your existing credentials and take advantage of the new Keyring where a password is not required every time.

+
+ + + + + +

You can simply disable the old password-secured Keyring when you update Parabolic to 2023.9.0 and re-enable the Keyring to get a secret-secured one. However, this will erase all data from the old Keyring and require you to re-enter all credentials.

-
+
+

Migrating from Password-Secured Keyring to Secret-Secured Keyring

+
+

This section applies to users who have enabled a Keyring in Parabolic (in versions before V2023.9.0) and secured it with a password. Starting with version 2023.9.0, Parabolic uses the system's credential manager to generate a random password (secret) to secure the Keyring instead of asking for a user to provide one. By using the system credential manager, Parabolic can also automatically unlock the Keyring at startup without user interaction.

+

If you have a password-secured Keyring from before version 2023.9.0, you can continue to use it in new versions of Parabolic without issue, but you will still need to provide the password everytime the application starts.

+

Follow the rest of this section if you'd like to migrate your existing credentials and take advantage of the new Keyring where a password is not required every time.

+
+ + + + + +

You can simply disable the old password-secured Keyring when you update Parabolic to 2023.9.0 and re-enable the Keyring to get a secret-secured one. However, this will erase all data from the old Keyring and require you to re-enter all credentials.

-
+
+

Migrating from Password-Secured Keyring to Secret-Secured Keyring

+
+

This section applies to users who have enabled a Keyring in Parabolic (in versions before V2023.9.0) and secured it with a password. Starting with version 2023.9.0, Parabolic uses the system's credential manager to generate a random password (secret) to secure the Keyring instead of asking for a user to provide one. By using the system credential manager, Parabolic can also automatically unlock the Keyring at startup without user interaction.

+

If you have a password-secured Keyring from before version 2023.9.0, you can continue to use it in new versions of Parabolic without issue, but you will still need to provide the password everytime the application starts.

+

Follow the rest of this section if you'd like to migrate your existing credentials and take advantage of the new Keyring where a password is not required every time.

+
+ + + + + +

You can simply disable the old password-secured Keyring when you update Parabolic to 2023.9.0 and re-enable the Keyring to get a secret-secured one. However, this will erase all data from the old Keyring and require you to re-enter all credentials.

-
+
+

Migrating from Password-Secured Keyring to Secret-Secured Keyring

+
+

This section applies to users who have enabled a Keyring in Parabolic (in versions before V2023.9.0) and secured it with a password. Starting with version 2023.9.0, Parabolic uses the system's credential manager to generate a random password (secret) to secure the Keyring instead of asking for a user to provide one. By using the system credential manager, Parabolic can also automatically unlock the Keyring at startup without user interaction.

+

If you have a password-secured Keyring from before version 2023.9.0, you can continue to use it in new versions of Parabolic without issue, but you will still need to provide the password everytime the application starts.

+

Follow the rest of this section if you'd like to migrate your existing credentials and take advantage of the new Keyring where a password is not required every time.

+
+ + + + + +

You can simply disable the old password-secured Keyring when you update Parabolic to 2023.9.0 and re-enable the Keyring to get a secret-secured one. However, this will erase all data from the old Keyring and require you to re-enter all credentials.

-
+
+

Migrating from Password-Secured Keyring to Secret-Secured Keyring

+
+

This section applies to users who have enabled a Keyring in Parabolic (in versions before V2023.9.0) and secured it with a password. Starting with version 2023.9.0, Parabolic uses the system's credential manager to generate a random password (secret) to secure the Keyring instead of asking for a user to provide one. By using the system credential manager, Parabolic can also automatically unlock the Keyring at startup without user interaction.

+

If you have a password-secured Keyring from before version 2023.9.0, you can continue to use it in new versions of Parabolic without issue, but you will still need to provide the password everytime the application starts.

+

Follow the rest of this section if you'd like to migrate your existing credentials and take advantage of the new Keyring where a password is not required every time.

+
+ + + + + +

You can simply disable the old password-secured Keyring when you update Parabolic to 2023.9.0 and re-enable the Keyring to get a secret-secured one. However, this will erase all data from the old Keyring and require you to re-enter all credentials.

-
+
+

Migrating from Password-Secured Keyring to Secret-Secured Keyring

+
+

This section applies to users who have enabled a Keyring in Parabolic (in versions before V2023.9.0) and secured it with a password. Starting with version 2023.9.0, Parabolic uses the system's credential manager to generate a random password (secret) to secure the Keyring instead of asking for a user to provide one. By using the system credential manager, Parabolic can also automatically unlock the Keyring at startup without user interaction.

+

If you have a password-secured Keyring from before version 2023.9.0, you can continue to use it in new versions of Parabolic without issue, but you will still need to provide the password everytime the application starts.

+

Follow the rest of this section if you'd like to migrate your existing credentials and take advantage of the new Keyring where a password is not required every time.

+
+ + + + + +

You can simply disable the old password-secured Keyring when you update Parabolic to 2023.9.0 and re-enable the Keyring to get a secret-secured one. However, this will erase all data from the old Keyring and require you to re-enter all credentials.

-
+
+

Migrating from Password-Secured Keyring to Secret-Secured Keyring

+
+

This section applies to users who have enabled a Keyring in Parabolic (in versions before V2023.9.0) and secured it with a password. Starting with version 2023.9.0, Parabolic uses the system's credential manager to generate a random password (secret) to secure the Keyring instead of asking for a user to provide one. By using the system credential manager, Parabolic can also automatically unlock the Keyring at startup without user interaction.

+

If you have a password-secured Keyring from before version 2023.9.0, you can continue to use it in new versions of Parabolic without issue, but you will still need to provide the password everytime the application starts.

+

Follow the rest of this section if you'd like to migrate your existing credentials and take advantage of the new Keyring where a password is not required every time.

+
+ + + + + +

You can simply disable the old password-secured Keyring when you update Parabolic to 2023.9.0 and re-enable the Keyring to get a secret-secured one. However, this will erase all data from the old Keyring and require you to re-enter all credentials.

-
+
+

Migrating from Password-Secured Keyring to Secret-Secured Keyring

+
+

This section applies to users who have enabled a Keyring in Parabolic (in versions before V2023.9.0) and secured it with a password. Starting with version 2023.9.0, Parabolic uses the system's credential manager to generate a random password (secret) to secure the Keyring instead of asking for a user to provide one. By using the system credential manager, Parabolic can also automatically unlock the Keyring at startup without user interaction.

+

If you have a password-secured Keyring from before version 2023.9.0, you can continue to use it in new versions of Parabolic without issue, but you will still need to provide the password everytime the application starts.

+

Follow the rest of this section if you'd like to migrate your existing credentials and take advantage of the new Keyring where a password is not required every time.

+
+ + + + + +

You can simply disable the old password-secured Keyring when you update Parabolic to 2023.9.0 and re-enable the Keyring to get a secret-secured one. However, this will erase all data from the old Keyring and require you to re-enter all credentials.

-
+
+

Migrating from Password-Secured Keyring to Secret-Secured Keyring

+
+

This section applies to users who have enabled a Keyring in Parabolic (in versions before V2023.9.0) and secured it with a password. Starting with version 2023.9.0, Parabolic uses the system's credential manager to generate a random password (secret) to secure the Keyring instead of asking for a user to provide one. By using the system credential manager, Parabolic can also automatically unlock the Keyring at startup without user interaction.

+

If you have a password-secured Keyring from before version 2023.9.0, you can continue to use it in new versions of Parabolic without issue, but you will still need to provide the password everytime the application starts.

+

Follow the rest of this section if you'd like to migrate your existing credentials and take advantage of the new Keyring where a password is not required every time.

+
+ + + + + +

You can simply disable the old password-secured Keyring when you update Parabolic to 2023.9.0 and re-enable the Keyring to get a secret-secured one. However, this will erase all data from the old Keyring and require you to re-enter all credentials.

-
+
+

Migrating from Password-Secured Keyring to Secret-Secured Keyring

+
+

This section applies to users who have enabled a Keyring in Parabolic (in versions before V2023.9.0) and secured it with a password. Starting with version 2023.9.0, Parabolic uses the system's credential manager to generate a random password (secret) to secure the Keyring instead of asking for a user to provide one. By using the system credential manager, Parabolic can also automatically unlock the Keyring at startup without user interaction.

+

If you have a password-secured Keyring from before version 2023.9.0, you can continue to use it in new versions of Parabolic without issue, but you will still need to provide the password everytime the application starts.

+

Follow the rest of this section if you'd like to migrate your existing credentials and take advantage of the new Keyring where a password is not required every time.

+
+ + + + + +

You can simply disable the old password-secured Keyring when you update Parabolic to 2023.9.0 and re-enable the Keyring to get a secret-secured one. However, this will erase all data from the old Keyring and require you to re-enter all credentials.

-
+
+

Migrating from Password-Secured Keyring to Secret-Secured Keyring

+
+

This section applies to users who have enabled a Keyring in Parabolic (in versions before V2023.9.0) and secured it with a password. Starting with version 2023.9.0, Parabolic uses the system's credential manager to generate a random password (secret) to secure the Keyring instead of asking for a user to provide one. By using the system credential manager, Parabolic can also automatically unlock the Keyring at startup without user interaction.

+

If you have a password-secured Keyring from before version 2023.9.0, you can continue to use it in new versions of Parabolic without issue, but you will still need to provide the password everytime the application starts.

+

Follow the rest of this section if you'd like to migrate your existing credentials and take advantage of the new Keyring where a password is not required every time.

+
+ + + + + +

You can simply disable the old password-secured Keyring when you update Parabolic to 2023.9.0 and re-enable the Keyring to get a secret-secured one. However, this will erase all data from the old Keyring and require you to re-enter all credentials.

-
+
+

Migrating from Password-Secured Keyring to Secret-Secured Keyring

+
+

This section applies to users who have enabled a Keyring in Parabolic (in versions before V2023.9.0) and secured it with a password. Starting with version 2023.9.0, Parabolic uses the system's credential manager to generate a random password (secret) to secure the Keyring instead of asking for a user to provide one. By using the system credential manager, Parabolic can also automatically unlock the Keyring at startup without user interaction.

+

If you have a password-secured Keyring from before version 2023.9.0, you can continue to use it in new versions of Parabolic without issue, but you will still need to provide the password everytime the application starts.

+

Follow the rest of this section if you'd like to migrate your existing credentials and take advantage of the new Keyring where a password is not required every time.

+
+ + + + + +

You can simply disable the old password-secured Keyring when you update Parabolic to 2023.9.0 and re-enable the Keyring to get a secret-secured one. However, this will erase all data from the old Keyring and require you to re-enter all credentials.

-
+
+

Migrating from Password-Secured Keyring to Secret-Secured Keyring

+
+

This section applies to users who have enabled a Keyring in Parabolic (in versions before V2023.9.0) and secured it with a password. Starting with version 2023.9.0, Parabolic uses the system's credential manager to generate a random password (secret) to secure the Keyring instead of asking for a user to provide one. By using the system credential manager, Parabolic can also automatically unlock the Keyring at startup without user interaction.

+

If you have a password-secured Keyring from before version 2023.9.0, you can continue to use it in new versions of Parabolic without issue, but you will still need to provide the password everytime the application starts.

+

Follow the rest of this section if you'd like to migrate your existing credentials and take advantage of the new Keyring where a password is not required every time.

+
+ + + + + +

You can simply disable the old password-secured Keyring when you update Parabolic to 2023.9.0 and re-enable the Keyring to get a secret-secured one. However, this will erase all data from the old Keyring and require you to re-enter all credentials.

-
+
+

Migrating from Password-Secured Keyring to Secret-Secured Keyring

+
+

This section applies to users who have enabled a Keyring in Parabolic (in versions before V2023.9.0) and secured it with a password. Starting with version 2023.9.0, Parabolic uses the system's credential manager to generate a random password (secret) to secure the Keyring instead of asking for a user to provide one. By using the system credential manager, Parabolic can also automatically unlock the Keyring at startup without user interaction.

+

If you have a password-secured Keyring from before version 2023.9.0, you can continue to use it in new versions of Parabolic without issue, but you will still need to provide the password everytime the application starts.

+

Follow the rest of this section if you'd like to migrate your existing credentials and take advantage of the new Keyring where a password is not required every time.

+
+ + + + + +

You can simply disable the old password-secured Keyring when you update Parabolic to 2023.9.0 and re-enable the Keyring to get a secret-secured one. However, this will erase all data from the old Keyring and require you to re-enter all credentials.

-
+
diff --git a/NickvisionTubeConverter.Shared/Docs/html/it/downloader.html b/NickvisionTubeConverter.Shared/Docs/html/it/downloader.html index 5b9e30f77..6379dd7e1 100644 --- a/NickvisionTubeConverter.Shared/Docs/html/it/downloader.html +++ b/NickvisionTubeConverter.Shared/Docs/html/it/downloader.html @@ -15,15 +15,15 @@

Downloader

-

This page explains all options for configuring the Downloader in Preferences in Parabolic.

+

Questa pagina spiega tutte le opzioni per configurare il Downloader nelle Preferenze in Parabolic.

-
Maximum Number of Active Downloads
+
Numero massimo di download attivi
-

The number of active downloads allowed to run at a time. Must be an integer value between 1 and 10.

-

If the max number of active downloads is reached, Parabolic will place new downloads in a queue until more downloads are able to be run.

+

Il numero di download attivi che è possibile eseguire contemporaneamente. Deve essere un valore intero compreso tra 1 e 10.

+

Se viene raggiunto il numero massimo di download attivi, Parabolic metterà i nuovi download in coda finché non sarà possibile eseguirne altri.

@@ -38,13 +38,13 @@ -

Default: 5

+

Predefinito: 5

Sovrascrivi file esistenti
-

If enabled, Parabolic will overwrite existing files.

-

For example, if a file named movie.mp4 exists in the download folder, and a new download is created named movie, movie.mp4 will be overwritten with the new download's content.

+

Se abilitato, Parabolic sovrascriverà i file esistenti.

+

Ad esempio, se nella cartella dei download esiste un file denominato movie.mp4 e viene creato un nuovo download denominato movie, movie.mp4 verrà sovrascritto con il contenuto del nuovo download.

@@ -59,12 +59,12 @@ -

Default: On

+

Predefinito: attivato

Limite di velocità
-

A limit, in Ki/s, that is applied to downloads only if they have the advanced option Speed Limit enabled. Must be an integer value between 512 and 10240.

+

Un limite, in Ki/s, che viene applicato ai download solo se hanno l'opzione avanzata Limite di velocità abilitata. Deve essere un valore intero compreso tra 512 e 10240.

@@ -99,7 +99,7 @@ -

Default: Off

+

Predefinito: Disattivato

Numero Massimo di Connessioni Per Server
@@ -169,7 +169,7 @@ -

Default: Off

+

Predefinito: Disattivato

Lingue dei Sottotitoli
@@ -201,7 +201,7 @@
URL proxy
-

The url of the proxy server to use.

+

L'URL del server proxy da utilizzare.

File di Cookie

Un file .txt di cookie da passare a yt-dlp quando si scarica. Questo può essere utile per scaricare file multimediali che richiedono il login, per esempio: video YouTube privati.

@@ -239,7 +239,7 @@
diff --git a/NickvisionTubeConverter.Shared/Docs/html/it/index.html b/NickvisionTubeConverter.Shared/Docs/html/it/index.html index 158f7217a..b88177333 100644 --- a/NickvisionTubeConverter.Shared/Docs/html/it/index.html +++ b/NickvisionTubeConverter.Shared/Docs/html/it/index.html @@ -3,7 +3,7 @@ -Parabolic Help +Aiuto per Parabolic
-

Parabolic Help

+

பரபோலிக் உதவி

-

This documentation will help you understand how to configure Parabolic to get the most of the application.

-

To get support, use issues or discussions on Github, or join our Matrix channel.

+

இந்த ஆவணங்கள், பயன்பாட்டைப் பயன்படுத்துவதற்கு, Parabolicஐ எவ்வாறு கட்டமைப்பது என்பதைப் புரிந்துகொள்ள உதவும்.

+

ஆதரவைப் பெற, சிக்கல்கள் அல்லது என்பதைப் பயன்படுத்தவும் GitHub இல் விவாதங்கள் அல்லது எங்கள் மேட்ரிக்ஸ் சேனலில் சேரவும்.

உள்ளூர் பதிப்புரிமை/DMCA சட்டங்களை மீறும் இந்தத் திட்டத்தை தவறாகப் பயன்படுத்துவதற்கு நிக்விஷன் பரபோலிக் இன் ஆசிரியர்கள் பொறுப்பல்ல/பொறுப்பேற்க மாட்டார்கள். பயனர்கள் இந்த பயன்பாட்டை தங்கள் சொந்த ஆபத்தில் பயன்படுத்துகின்றனர்.

diff --git a/NickvisionTubeConverter.Shared/Docs/html/ta/keyring.html b/NickvisionTubeConverter.Shared/Docs/html/ta/keyring.html index 829132c08..346de49c4 100644 --- a/NickvisionTubeConverter.Shared/Docs/html/ta/keyring.html +++ b/NickvisionTubeConverter.Shared/Docs/html/ta/keyring.html @@ -15,61 +15,52 @@

சாவி வளையம்

-
-

பரபோலிக் இல் சாவி வளையத்தைப் பயன்படுத்துவதற்கான அனைத்து விருப்பங்களையும் இந்தப் பக்கம் விளக்குகிறது.

-
-
Backend
-
-

The Keyring feature is backed by the Nickvision.Keyring library.

-

This library uses SQLCipher to securley store credentials in a platform independent manner.

-
-
Enabling The Keyring
-
-

When the Keyring is enabled, the user will be asked to enter a password to encrypt the Keyring.

-

There is no way to recover the Keyring password if lost.

-

This password will be used to unlock the Keyring in the future.

-
+

பரபோலிக் இல் சாவி வளையத்தைப் பயன்படுத்துவதற்கான அனைத்து விருப்பங்களையும் இந்தப் பக்கம் விளக்குகிறது.

+
+

பின்தளம்

+
+

The Keyring feature is backed by the Nickvision.Aura library.

+

This library uses SQLCipher to securely store credentials in a platform independent manner.

+

The library will use you system's credential manager (i.e. libsecret on Linux and Windows Credential Manager on Windows) for securing the Keyring.

+
+
+

ஒரு நற்சான்றிதழை சேமித்தல்

+
+

நற்சான்றிதழில் சேமிக்கக்கூடிய புலங்கள் இங்கே உள்ளன:

+

பெயர்: நற்சான்றிதழின் பெயர்

+

URL (விரும்பினால்): நற்சான்றிதழின் URL

+

பயனர்பெயர் (கடவுச்சொல் காலியாக இல்லாவிட்டால் விருப்பமானது): நற்சான்றிதழின் பயனர்பெயர்

+

கடவுச்சொல் (பயனர் பெயர் காலியாக இல்லாவிட்டால் விருப்பமானது): நற்சான்றிதழின் கடவுச்சொல்

+
+
+

Migrating from Password-Secured Keyring to Secret-Secured Keyring

+
+

This section applies to users who have enabled a Keyring in Parabolic (in versions before V2023.9.0) and secured it with a password. Starting with version 2023.9.0, Parabolic uses the system's credential manager to generate a random password (secret) to secure the Keyring instead of asking for a user to provide one. By using the system credential manager, Parabolic can also automatically unlock the Keyring at startup without user interaction.

+

If you have a password-secured Keyring from before version 2023.9.0, you can continue to use it in new versions of Parabolic without issue, but you will still need to provide the password everytime the application starts.

+

Follow the rest of this section if you'd like to migrate your existing credentials and take advantage of the new Keyring where a password is not required every time.

+
- - - - - - - - - - + + -
-

If the Keyring password is lost, the user will be unable to use this feature unless the Keyring database file is deleted.

-

The Keyring file is stored in $CONFIG/Nickvision/Nickvision Parabolic/tubeconverter.nring

-
+

You can simply disable the old password-secured Keyring when you update Parabolic to 2023.9.0 and re-enable the Keyring to get a secret-secured one. However, this will erase all data from the old Keyring and require you to re-enter all credentials.

-
-
Disabling The Keyring
-
-

When the Keyring is disabled, the backing nring database is destroyed and all credentials stored are erased.

-

If the Keyring is re-enabled, a brand new database file will be created and the user will be prompted to enter a password again.

-
-
Storing a Credential
-
-

Here are the fields that can be stored in a credential:

-

Name: The name of the credential

-

URL (optional): The URL of the credential

-

Username (optional if password is not empty): The username of the credential

-

Password (optional if username is not empty): The password of the credential

-
-
-
-
+ diff --git a/NickvisionTubeConverter.Shared/Docs/html/ta/newDownload.html b/NickvisionTubeConverter.Shared/Docs/html/ta/newDownload.html index b65f354c2..dd845b3f8 100644 --- a/NickvisionTubeConverter.Shared/Docs/html/ta/newDownload.html +++ b/NickvisionTubeConverter.Shared/Docs/html/ta/newDownload.html @@ -3,7 +3,7 @@ -New Download +புதிய பதிவிறக்கம்