Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions lib/data/model/app/menu/image.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import 'package:fl_lib/fl_lib.dart';
import 'package:flutter/material.dart';
import 'package:server_box/core/extension/context/locale.dart';

enum ImageMenu {
pull,
rm;

static List<ImageMenu> get items => [pull, rm];

IconData get icon => switch (this) {
ImageMenu.pull => Icons.download,
ImageMenu.rm => Icons.delete,
};

String get toStr => switch (this) {
ImageMenu.pull => l10n.pull,
ImageMenu.rm => libL10n.delete,
};
}
6 changes: 6 additions & 0 deletions lib/generated/l10n/l10n.dart
Original file line number Diff line number Diff line change
Expand Up @@ -840,6 +840,12 @@ abstract class AppLocalizations {
/// **'Images list'**
String get imagesList;

/// No description provided for @pull.
///
/// In en, this message translates to:
/// **'Pull'**
String get pull;

/// No description provided for @installDockerWithUrl.
///
/// In en, this message translates to:
Expand Down
3 changes: 3 additions & 0 deletions lib/generated/l10n/l10n_de.dart
Original file line number Diff line number Diff line change
Expand Up @@ -415,6 +415,9 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get imagesList => 'Images';

@override
String get pull => 'Pull';

@override
String get installDockerWithUrl =>
'Bitte installiere docker zuerst. https://docs.docker.com/engine/install';
Expand Down
3 changes: 3 additions & 0 deletions lib/generated/l10n/l10n_en.dart
Original file line number Diff line number Diff line change
Expand Up @@ -413,6 +413,9 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get imagesList => 'Images list';

@override
String get pull => 'Pull';

@override
String get installDockerWithUrl =>
'Please https://docs.docker.com/engine/install docker first.';
Expand Down
3 changes: 3 additions & 0 deletions lib/generated/l10n/l10n_es.dart
Original file line number Diff line number Diff line change
Expand Up @@ -414,6 +414,9 @@ class AppLocalizationsEs extends AppLocalizations {
@override
String get imagesList => 'Lista de imágenes';

@override
String get pull => 'Extraer';

@override
String get installDockerWithUrl =>
'Por favor instala Docker primero desde https://docs.docker.com/engine/install';
Expand Down
3 changes: 3 additions & 0 deletions lib/generated/l10n/l10n_fr.dart
Original file line number Diff line number Diff line change
Expand Up @@ -415,6 +415,9 @@ class AppLocalizationsFr extends AppLocalizations {
@override
String get imagesList => 'Liste des images';

@override
String get pull => 'Tirer';

@override
String get installDockerWithUrl =>
'Veuillez d\'abord installer docker depuis https://docs.docker.com/engine/install.';
Expand Down
3 changes: 3 additions & 0 deletions lib/generated/l10n/l10n_id.dart
Original file line number Diff line number Diff line change
Expand Up @@ -413,6 +413,9 @@ class AppLocalizationsId extends AppLocalizations {
@override
String get imagesList => 'Daftar gambar';

@override
String get pull => 'Tarik';

@override
String get installDockerWithUrl =>
'Silakan https://docs.docker.com/engine/install Docker pertama.';
Expand Down
3 changes: 3 additions & 0 deletions lib/generated/l10n/l10n_it.dart
Original file line number Diff line number Diff line change
Expand Up @@ -413,6 +413,9 @@ class AppLocalizationsIt extends AppLocalizations {
@override
String get imagesList => 'Elenco immagini';

@override
String get pull => 'Pull';

@override
String get installDockerWithUrl =>
'Installa prima docker da https://docs.docker.com/engine/install .';
Expand Down
3 changes: 3 additions & 0 deletions lib/generated/l10n/l10n_ja.dart
Original file line number Diff line number Diff line change
Expand Up @@ -402,6 +402,9 @@ class AppLocalizationsJa extends AppLocalizations {
@override
String get imagesList => 'イメージリスト';

@override
String get pull => 'プル';

@override
String get installDockerWithUrl =>
'最初に https://docs.docker.com/engine/install dockerをインストールしてください';
Expand Down
3 changes: 3 additions & 0 deletions lib/generated/l10n/l10n_ko.dart
Original file line number Diff line number Diff line change
Expand Up @@ -400,6 +400,9 @@ class AppLocalizationsKo extends AppLocalizations {
@override
String get imagesList => '이미지 목록';

@override
String get pull => '풀';

@override
String get installDockerWithUrl =>
'먼저 https://docs.docker.com/engine/install 에서 Docker를 설치해 주세요.';
Expand Down
3 changes: 3 additions & 0 deletions lib/generated/l10n/l10n_nl.dart
Original file line number Diff line number Diff line change
Expand Up @@ -414,6 +414,9 @@ class AppLocalizationsNl extends AppLocalizations {
@override
String get imagesList => 'Lijst met afbeeldingen';

@override
String get pull => 'Pull';

@override
String get installDockerWithUrl =>
'Installeer eerst docker via https://docs.docker.com/engine/install.';
Expand Down
3 changes: 3 additions & 0 deletions lib/generated/l10n/l10n_pt.dart
Original file line number Diff line number Diff line change
Expand Up @@ -413,6 +413,9 @@ class AppLocalizationsPt extends AppLocalizations {
@override
String get imagesList => 'Lista de imagens';

@override
String get pull => 'Puxar';

@override
String get installDockerWithUrl =>
'Por favor, instale o Docker primeiro em https://docs.docker.com/engine/install';
Expand Down
3 changes: 3 additions & 0 deletions lib/generated/l10n/l10n_ru.dart
Original file line number Diff line number Diff line change
Expand Up @@ -414,6 +414,9 @@ class AppLocalizationsRu extends AppLocalizations {
@override
String get imagesList => 'Список образов';

@override
String get pull => 'Pull';

@override
String get installDockerWithUrl =>
'Пожалуйста, сначала установите Docker по адресу https://docs.docker.com/engine/install';
Expand Down
3 changes: 3 additions & 0 deletions lib/generated/l10n/l10n_tr.dart
Original file line number Diff line number Diff line change
Expand Up @@ -413,6 +413,9 @@ class AppLocalizationsTr extends AppLocalizations {
@override
String get imagesList => 'Görüntü listesi';

@override
String get pull => 'Çek';

@override
String get installDockerWithUrl =>
'Lütfen önce https://docs.docker.com/engine/install adresinden Docker\'ı kurun.';
Expand Down
3 changes: 3 additions & 0 deletions lib/generated/l10n/l10n_uk.dart
Original file line number Diff line number Diff line change
Expand Up @@ -415,6 +415,9 @@ class AppLocalizationsUk extends AppLocalizations {
@override
String get imagesList => 'Список зображень';

@override
String get pull => 'Pull';

@override
String get installDockerWithUrl =>
'Будь ласка, спочатку встановіть Docker. (https://docs.docker.com/engine/install)';
Expand Down
6 changes: 6 additions & 0 deletions lib/generated/l10n/l10n_zh.dart
Original file line number Diff line number Diff line change
Expand Up @@ -394,6 +394,9 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get imagesList => '镜像列表';

@override
String get pull => '拉取';

@override
String get installDockerWithUrl =>
'请先前往 https://docs.docker.com/engine/install 安装 Docker';
Expand Down Expand Up @@ -1376,6 +1379,9 @@ class AppLocalizationsZhTw extends AppLocalizationsZh {
@override
String get imagesList => '映像檔列表';

@override
String get pull => '拉取';

@override
String get installDockerWithUrl =>
'請先前往 https://docs.docker.com/engine/install 安裝 Docker';
Expand Down
1 change: 1 addition & 0 deletions lib/l10n/app_de.arb
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@
"ignoreCert": "Zertifikat ignorieren",
"image": "Image",
"imagesList": "Images",
"pull": "Pull",
"installDockerWithUrl": "Bitte installiere docker zuerst. https://docs.docker.com/engine/install",
"invalid": "Ungültig",
"jumpServer": "Server springen",
Expand Down
1 change: 1 addition & 0 deletions lib/l10n/app_en.arb
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@
"ignoreCert": "Ignore certificate",
"image": "Image",
"imagesList": "Images list",
"pull": "Pull",
"installDockerWithUrl": "Please https://docs.docker.com/engine/install docker first.",
"invalid": "Invalid",
"invalidUrl": "Invalid URL",
Expand Down
1 change: 1 addition & 0 deletions lib/l10n/app_es.arb
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@
"ignoreCert": "Ignorar certificado",
"image": "Imagen",
"imagesList": "Lista de imágenes",
"pull": "Extraer",
"installDockerWithUrl": "Por favor instala Docker primero desde https://docs.docker.com/engine/install",
"invalid": "Inválido",
"jumpServer": "Servidor de salto",
Expand Down
1 change: 1 addition & 0 deletions lib/l10n/app_fr.arb
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@
"ignoreCert": "Ignorer le certificat",
"image": "Image",
"imagesList": "Liste des images",
"pull": "Tirer",
"installDockerWithUrl": "Veuillez d'abord installer docker depuis https://docs.docker.com/engine/install.",
"invalid": "Invalide",
"jumpServer": "Aller au serveur",
Expand Down
1 change: 1 addition & 0 deletions lib/l10n/app_id.arb
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@
"ignoreCert": "Abaikan sertifikat",
"image": "Gambar",
"imagesList": "Daftar gambar",
"pull": "Tarik",
"installDockerWithUrl": "Silakan https://docs.docker.com/engine/install Docker pertama.",
"invalid": "Tidak valid",
"jumpServer": "Lompat server",
Expand Down
1 change: 1 addition & 0 deletions lib/l10n/app_it.arb
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@
"ignoreCert": "Ignora certificato",
"image": "Immagine",
"imagesList": "Elenco immagini",
"pull": "Pull",
"installDockerWithUrl": "Installa prima docker da https://docs.docker.com/engine/install .",
"invalid": "Non valido",
"invalidHostFormat": "Formato host non valido. Sono consentiti solo caratteri IPv4, IPv6 e di dominio.",
Expand Down
1 change: 1 addition & 0 deletions lib/l10n/app_ja.arb
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@
"ignoreCert": "証明書を無視する",
"image": "イメージ",
"imagesList": "イメージリスト",
"pull": "プル",
"installDockerWithUrl": "最初に https://docs.docker.com/engine/install dockerをインストールしてください",
"invalid": "無効",
"jumpServer": "ジャンプサーバー",
Expand Down
1 change: 1 addition & 0 deletions lib/l10n/app_ko.arb
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@
"ignoreCert": "인증서 무시",
"image": "이미지",
"imagesList": "이미지 목록",
"pull": "풀",
Comment thread
GT-610 marked this conversation as resolved.
"installDockerWithUrl": "먼저 https://docs.docker.com/engine/install 에서 Docker를 설치해 주세요.",
"invalid": "유효하지 않음",
"invalidHostFormat": "잘못된 호스트 형식입니다. IPv4, IPv6, 도메인 문자만 허용됩니다.",
Expand Down
1 change: 1 addition & 0 deletions lib/l10n/app_nl.arb
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@
"ignoreCert": "Certificaat negeren",
"image": "Afbeelding",
"imagesList": "Lijst met afbeeldingen",
"pull": "Pull",
"installDockerWithUrl": "Installeer eerst docker via https://docs.docker.com/engine/install.",
"invalid": "Ongeldig",
"jumpServer": "Spring naar server",
Expand Down
1 change: 1 addition & 0 deletions lib/l10n/app_pt.arb
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@
"ignoreCert": "Ignorar certificado",
"image": "Imagem",
"imagesList": "Lista de imagens",
"pull": "Puxar",
"installDockerWithUrl": "Por favor, instale o Docker primeiro em https://docs.docker.com/engine/install",
"invalid": "Inválido",
"jumpServer": "Servidor de salto",
Expand Down
1 change: 1 addition & 0 deletions lib/l10n/app_ru.arb
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@
"ignoreCert": "Игнорировать сертификат",
"image": "Образ",
"imagesList": "Список образов",
"pull": "Pull",
"installDockerWithUrl": "Пожалуйста, сначала установите Docker по адресу https://docs.docker.com/engine/install",
"invalid": "Недействительный",
"jumpServer": "прыжковый сервер",
Expand Down
1 change: 1 addition & 0 deletions lib/l10n/app_tr.arb
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@
"ignoreCert": "Sertifikayı yok say",
"image": "Görüntü",
"imagesList": "Görüntü listesi",
"pull": "Çek",
"installDockerWithUrl": "Lütfen önce https://docs.docker.com/engine/install adresinden Docker'ı kurun.",
"invalid": "Geçersiz",
"jumpServer": "Atlama sunucusu",
Expand Down
1 change: 1 addition & 0 deletions lib/l10n/app_uk.arb
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@
"ignoreCert": "Ігнорувати сертифікат",
"image": "Зображення",
"imagesList": "Список зображень",
"pull": "Pull",
"installDockerWithUrl": "Будь ласка, спочатку встановіть Docker. (https://docs.docker.com/engine/install)",
"invalid": "Недійсний",
"invalidHostFormat": "Недійсний формат хоста. Дозволено лише символи IPv4, IPv6 та домену.",
Expand Down
1 change: 1 addition & 0 deletions lib/l10n/app_zh.arb
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@
"ignoreCert": "忽略证书",
"image": "镜像",
"imagesList": "镜像列表",
"pull": "拉取",
"installDockerWithUrl": "请先前往 https://docs.docker.com/engine/install 安装 Docker",
"invalid": "无效",
"invalidHostFormat": "主机格式无效,仅支持 IPv4、IPv6 和域名字符。",
Expand Down
1 change: 1 addition & 0 deletions lib/l10n/app_zh_tw.arb
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@
"ignoreCert": "忽略憑證",
"image": "映像檔",
"imagesList": "映像檔列表",
"pull": "拉取",
"installDockerWithUrl": "請先前往 https://docs.docker.com/engine/install 安裝 Docker",
"invalid": "無效",
"invalidHostFormat": "主機格式無效,僅支援 IPv4、IPv6 和網域字元。",
Expand Down
28 changes: 28 additions & 0 deletions lib/view/page/container/actions.dart
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,34 @@ extension on _ContainerPageState {
);
}

void _onTapImageMenu(ImageMenu item, ContainerImg e) {
switch (item) {
case ImageMenu.pull:
final repo = e.repository;
if (repo == null) {
context.showSnackBar('Repository is null');
return;
}
final tag = e.tag ?? 'latest';
final imageRef = '$repo:$tag';
context.showRoundDialog(
title: libL10n.attention,
child: Text(libL10n.askContinue('${l10n.pull} Image($imageRef)')),
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Outdated
actions: Btn.ok(
onTap: () async {
context.pop();
final result = await _containerNotifier.run('pull $imageRef');
if (result != null) {
context.showSnackBar(result.message ?? 'null');
}
},
Comment thread
coderabbitai[bot] marked this conversation as resolved.
).toList,
);
case ImageMenu.rm:
_showImageRmDialog(e);
Comment thread
coderabbitai[bot] marked this conversation as resolved.
}
}

void _onTapMoreBtn(ContainerMenu item, ContainerPs dItem) async {
final id = dItem.id;
if (id == null) {
Expand Down
8 changes: 4 additions & 4 deletions lib/view/page/container/container.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import 'package:server_box/core/route.dart';
import 'package:server_box/data/model/app/error.dart';
import 'package:server_box/data/model/app/menu/base.dart';
import 'package:server_box/data/model/app/menu/container.dart';
import 'package:server_box/data/model/app/menu/image.dart';
import 'package:server_box/data/model/container/image.dart';
import 'package:server_box/data/model/container/ps.dart';
import 'package:server_box/data/model/container/type.dart';
Expand Down Expand Up @@ -151,10 +152,9 @@ class _ContainerPageState extends ConsumerState<ContainerPage> {
return ListTile(
title: Text(title ?? l10n.unknown, style: UIs.text15),
subtitle: Text('${reg ?? ''} - ${e.tag} - ${e.sizeMB}', style: UIs.text13Grey),
trailing: Btn.icon(
padding: EdgeInsets.zero,
icon: const Icon(Icons.delete),
onTap: () => _showImageRmDialog(e),
trailing: PopupMenu<ImageMenu>(
items: ImageMenu.items.map((e) => PopMenu.build(e, e.icon, e.toStr)).toList(),
onSelected: (item) => _onTapImageMenu(item, e),
),
);
}
Expand Down
Loading