Skip to content

Commit 9d90002

Browse files
authored
macOS: Add "Reconnect" and "Disconnect" from menu (#1154)
Fixes #1069
1 parent b355a3a commit 9d90002

File tree

15 files changed

+58
-15
lines changed

15 files changed

+58
-15
lines changed

Packages/App/Sources/AppUIMain/Views/AppMenu/macOS/AppMenu.swift

+43
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,12 @@ public struct AppMenu: View {
5353
loginToggle
5454
keepToggle
5555
Divider()
56+
Group {
57+
reconnectButton
58+
disconnectButton
59+
}
60+
.disabled(!isTunnelActionable)
61+
Divider()
5662
profilesList
5763
Divider()
5864
aboutButton
@@ -79,6 +85,37 @@ private extension AppMenu {
7985
Toggle(Strings.Views.Preferences.keepsInMenu, isOn: $settings.keepsInMenu)
8086
}
8187

88+
var reconnectButton: some View {
89+
Button(Strings.Global.Actions.reconnect) {
90+
Task {
91+
guard let currentProfileId = tunnel.currentProfile?.id else {
92+
return
93+
}
94+
guard let profile = profileManager.profile(withId: currentProfileId) else {
95+
return
96+
}
97+
do {
98+
try await tunnel.disconnect()
99+
try await tunnel.connect(with: profile)
100+
} catch {
101+
pp_log(.app, .error, "Unable to reconnect to profile \(profile.id) from menu: \(error)")
102+
}
103+
}
104+
}
105+
}
106+
107+
var disconnectButton: some View {
108+
Button(Strings.Global.Actions.disconnect) {
109+
Task {
110+
do {
111+
try await tunnel.disconnect()
112+
} catch {
113+
pp_log(.app, .error, "Unable to disconnect from menu: \(error)")
114+
}
115+
}
116+
}
117+
}
118+
82119
var profilesList: some View {
83120
Group {
84121
ForEach(profileManager.previews, id: \.id, content: profileToggle)
@@ -125,4 +162,10 @@ private extension AppMenu {
125162
}
126163
}
127164

165+
private extension AppMenu {
166+
var isTunnelActionable: Bool {
167+
[.activating, .active].contains(tunnel.status)
168+
}
169+
}
170+
128171
#endif

Packages/App/Sources/UILibrary/L10n/SwiftGen+Strings.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -210,8 +210,8 @@ public enum Strings {
210210
public static let hide = Strings.tr("Localizable", "global.actions.hide", fallback: "Hide")
211211
/// Purchase
212212
public static let purchase = Strings.tr("Localizable", "global.actions.purchase", fallback: "Purchase")
213-
/// Restart
214-
public static let reconnect = Strings.tr("Localizable", "global.actions.reconnect", fallback: "Restart")
213+
/// Reconnect
214+
public static let reconnect = Strings.tr("Localizable", "global.actions.reconnect", fallback: "Reconnect")
215215
/// Delete
216216
public static let remove = Strings.tr("Localizable", "global.actions.remove", fallback: "Delete")
217217
/// Save

Packages/App/Sources/UILibrary/Resources/de.lproj/Localizable.strings

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
"global.actions.enable" = "Aktivieren";
6868
"global.actions.hide" = "Verbergen";
6969
"global.actions.purchase" = "Kaufen";
70-
"global.actions.reconnect" = "Neustart";
70+
"global.actions.reconnect" = "Erneut verbinden";
7171
"global.actions.remove" = "Löschen";
7272
"global.actions.save" = "Speichern";
7373
"global.actions.select" = "Auswählen";

Packages/App/Sources/UILibrary/Resources/el.lproj/Localizable.strings

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
"global.actions.enable" = "Ενεργοποίηση";
6868
"global.actions.hide" = "Απόκρυψη";
6969
"global.actions.purchase" = "Αγορά";
70-
"global.actions.reconnect" = "Επανεκκίνηση";
70+
"global.actions.reconnect" = "Επανασύνδεση";
7171
"global.actions.remove" = "Κατάργηση";
7272
"global.actions.save" = "Αποθήκευση";
7373
"global.actions.select" = "Επιλογή";

Packages/App/Sources/UILibrary/Resources/en.lproj/Localizable.strings

+1-1
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@
256256
"global.actions.hide" = "Hide";
257257
"global.actions.purchase" = "Purchase";
258258
"global.actions.remove" = "Delete";
259-
"global.actions.reconnect" = "Restart";
259+
"global.actions.reconnect" = "Reconnect";
260260
"global.actions.save" = "Save";
261261
"global.actions.select" = "Select";
262262
"global.actions.show" = "Show";

Packages/App/Sources/UILibrary/Resources/es.lproj/Localizable.strings

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
"global.actions.enable" = "Habilitar";
6868
"global.actions.hide" = "Ocultar";
6969
"global.actions.purchase" = "Comprar";
70-
"global.actions.reconnect" = "Reiniciar";
70+
"global.actions.reconnect" = "Reconectar";
7171
"global.actions.remove" = "Eliminar";
7272
"global.actions.save" = "Guardar";
7373
"global.actions.select" = "Seleccionar";

Packages/App/Sources/UILibrary/Resources/fr.lproj/Localizable.strings

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
"global.actions.enable" = "Activer";
6868
"global.actions.hide" = "Cacher";
6969
"global.actions.purchase" = "Acheter";
70-
"global.actions.reconnect" = "Redémarrer";
70+
"global.actions.reconnect" = "Reconnecter";
7171
"global.actions.remove" = "Supprimer";
7272
"global.actions.save" = "Sauvegarder";
7373
"global.actions.select" = "Sélectionner";

Packages/App/Sources/UILibrary/Resources/it.lproj/Localizable.strings

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
"global.actions.enable" = "Abilita";
6868
"global.actions.hide" = "Nascondi";
6969
"global.actions.purchase" = "Acquista";
70-
"global.actions.reconnect" = "Riavvia";
70+
"global.actions.reconnect" = "Riconnetti";
7171
"global.actions.remove" = "Elimina";
7272
"global.actions.save" = "Salva";
7373
"global.actions.select" = "Seleziona";

Packages/App/Sources/UILibrary/Resources/nl.lproj/Localizable.strings

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
"global.actions.enable" = "Inschakelen";
6868
"global.actions.hide" = "Verbergen";
6969
"global.actions.purchase" = "Aankopen";
70-
"global.actions.reconnect" = "Herstarten";
70+
"global.actions.reconnect" = "Opnieuw verbinden";
7171
"global.actions.remove" = "Verwijderen";
7272
"global.actions.save" = "Opslaan";
7373
"global.actions.select" = "Selecteren";

Packages/App/Sources/UILibrary/Resources/pl.lproj/Localizable.strings

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
"global.actions.enable" = "Włącz";
6868
"global.actions.hide" = "Ukryj";
6969
"global.actions.purchase" = "Zakup";
70-
"global.actions.reconnect" = "Uruchom ponownie";
70+
"global.actions.reconnect" = "Ponowne połączenie";
7171
"global.actions.remove" = "Usuń";
7272
"global.actions.save" = "Zapisz";
7373
"global.actions.select" = "Wybierz";

Packages/App/Sources/UILibrary/Resources/pt.lproj/Localizable.strings

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
"global.actions.enable" = "Ativar";
6868
"global.actions.hide" = "Ocultar";
6969
"global.actions.purchase" = "Comprar";
70-
"global.actions.reconnect" = "Reiniciar";
70+
"global.actions.reconnect" = "Reconectar";
7171
"global.actions.remove" = "Remover";
7272
"global.actions.save" = "Salvar";
7373
"global.actions.select" = "Selecionar";

Packages/App/Sources/UILibrary/Resources/ru.lproj/Localizable.strings

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
"global.actions.enable" = "Включить";
6868
"global.actions.hide" = "Скрыть";
6969
"global.actions.purchase" = "Купить";
70-
"global.actions.reconnect" = "Перезапустить";
70+
"global.actions.reconnect" = "Переподключение";
7171
"global.actions.remove" = "Удалить";
7272
"global.actions.save" = "Сохранить";
7373
"global.actions.select" = "Выбрать";

Packages/App/Sources/UILibrary/Resources/sv.lproj/Localizable.strings

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
"global.actions.enable" = "Aktivera";
6868
"global.actions.hide" = "Dölj";
6969
"global.actions.purchase" = "Köp";
70-
"global.actions.reconnect" = "Starta om";
70+
"global.actions.reconnect" = "Återanslut";
7171
"global.actions.remove" = "Ta bort";
7272
"global.actions.save" = "Spara";
7373
"global.actions.select" = "Välj";

Packages/App/Sources/UILibrary/Resources/uk.lproj/Localizable.strings

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
"global.actions.enable" = "Увімкнути";
6868
"global.actions.hide" = "Приховати";
6969
"global.actions.purchase" = "Купити";
70-
"global.actions.reconnect" = "Перезапустити";
70+
"global.actions.reconnect" = "Повторне підключення";
7171
"global.actions.remove" = "Видалити";
7272
"global.actions.save" = "Зберегти";
7373
"global.actions.select" = "Вибрати";

Packages/App/Sources/UILibrary/Resources/zh-Hans.lproj/Localizable.strings

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@
6767
"global.actions.enable" = "启用";
6868
"global.actions.hide" = "隐藏";
6969
"global.actions.purchase" = "购买";
70-
"global.actions.reconnect" = "重新启动";
70+
"global.actions.reconnect" = "重新连接";
7171
"global.actions.remove" = "删除";
7272
"global.actions.save" = "保存";
7373
"global.actions.select" = "选择";

0 commit comments

Comments
 (0)