Skip to content

Commit ee89dd0

Browse files
committed
Merge branch 'fix/antenna-error-problem' into testing
2 parents fb2cf8a + 40b3940 commit ee89dd0

File tree

9 files changed

+65
-46
lines changed

9 files changed

+65
-46
lines changed

lib/l10n/app_ja-oj.arb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
"receiveOnlyFiles": "ファイル付きのノートのみ受け取りましてよ",
1919
"receiveLocal": "ローカルのみを受け取りましてよ",
2020
"receiveLocalAvailability": "ローカルのみの指定はMisskey 2023.10.2以降で有効ですこと",
21-
"confirmDeletingAntenna": "アンテナを削除いたしますこと?",
21+
"confirmDeletingAntenna": "アンテナ「{antennaName}」を削除いたしますこと?",
2222
"channelJoinningCounts": "{usersCount}人が参加なされてますわ",
2323

2424
"confirmDeleteClip": "クリップを削除いたしますこと?",

lib/l10n/app_ja.arb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
"antennaSourceHome": "ホーム",
8080
"antennaSourceAll": "ぜんぶ",
8181
"antennaSourceUser": "ユーザー",
82+
"antennaSourceUsersBlackList": "指定したユーザー以外",
8283
"antennaSourceList": "リスト",
8384
"selectAntennaSource": "ソースを選択",
8485
"selectList": "リストを選択",
@@ -93,7 +94,7 @@
9394
"receiveOnlyFiles": "ファイル付きのノートのみ受信する",
9495
"receiveLocal": "ローカルのみ受信する",
9596
"receiveLocalAvailability": "ローカルのみの指定はMisskey 2023.10.2以降で有効です。",
96-
"confirmDeletingAntenna": "アンテナ削除するか?",
97+
"confirmDeletingAntenna": "アンテナ「{antennaName}」を削除するか?",
9798

9899
"channelJoinningCounts": "{usersCount}人が参加中",
99100
"@channelJoinningCounts": {

lib/router/app_router.gr.dart

Lines changed: 7 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/view/antenna_page/antenna_list.dart

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import "package:hooks_riverpod/hooks_riverpod.dart";
55
import "package:miria/providers.dart";
66
import "package:miria/router/app_router.dart";
77
import "package:miria/view/antenna_page/antennas_notifier.dart";
8+
import "package:miria/view/common/dialog/dialog_state.dart";
89
import "package:miria/view/common/error_detail.dart";
9-
import "package:miria/view/dialogs/simple_confirm_dialog.dart";
1010

1111
class AntennaList extends ConsumerWidget {
1212
const AntennaList({super.key});
@@ -25,18 +25,20 @@ class AntennaList extends ConsumerWidget {
2525
trailing: IconButton(
2626
icon: const Icon(Icons.delete),
2727
onPressed: () async {
28-
final result = await SimpleConfirmDialog.show(
29-
context: context,
30-
message: S.of(context).confirmDeletingAntenna,
31-
primary: S.of(context).delete,
32-
secondary: S.of(context).cancel,
33-
);
34-
if (!context.mounted) return;
35-
if (result ?? false) {
36-
await ref
37-
.read(antennasNotifierProvider.notifier)
38-
.delete(antenna.id);
39-
}
28+
final result = await ref
29+
.read(dialogStateNotifierProvider.notifier)
30+
.showDialog(
31+
message: (context) =>
32+
S.of(context).confirmDeletingAntenna(antenna.name),
33+
actions: (context) => [
34+
S.of(context).doDeleting,
35+
S.of(context).cancel,
36+
],
37+
);
38+
if (result != 0) return;
39+
await ref
40+
.read(antennasNotifierProvider.notifier)
41+
.delete(antenna.id);
4042
},
4143
),
4244
onTap: () async => context.pushRoute(

lib/view/antenna_page/antenna_notes_page.dart

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,18 +43,14 @@ class AntennaNotesPage extends ConsumerWidget implements AutoRouteWrapper {
4343
IconButton(
4444
icon: const Icon(Icons.settings),
4545
onPressed: () async {
46-
final settings = await context.pushRoute<AntennaSettings>(
46+
await context.pushRoute<AntennaSettings>(
4747
AntennaSettingsRoute(
4848
title: Text(S.of(context).edit),
4949
initialSettings: AntennaSettings.fromAntenna(antenna),
5050
account: accountContext.postAccount,
51+
antennaId: antenna.id,
5152
),
5253
);
53-
if (!context.mounted) return;
54-
if (settings == null) return;
55-
await ref
56-
.read(antennasNotifierProvider.notifier)
57-
.updateAntenna(antenna.id, settings);
5854
},
5955
),
6056
],

lib/view/antenna_page/antenna_page.dart

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import "package:miria/model/antenna_settings.dart";
66
import "package:miria/providers.dart";
77
import "package:miria/router/app_router.dart";
88
import "package:miria/view/antenna_page/antenna_list.dart";
9-
import "package:miria/view/antenna_page/antennas_notifier.dart";
109
import "package:miria/view/common/account_scope.dart";
1110

1211
@RoutePage()
@@ -28,23 +27,18 @@ class AntennaPage extends ConsumerWidget implements AutoRouteWrapper {
2827
IconButton(
2928
icon: const Icon(Icons.add),
3029
onPressed: () async {
31-
final settings = await context.pushRoute<AntennaSettings>(
30+
await context.pushRoute<AntennaSettings>(
3231
AntennaSettingsRoute(
3332
title: Text(S.of(context).create),
3433
account: accountContext.postAccount,
3534
),
3635
);
37-
if (!context.mounted) return;
38-
if (settings == null) return;
39-
await ref
40-
.read(antennasNotifierProvider.notifier)
41-
.create(settings);
4236
},
4337
),
4438
],
4539
),
4640
body: const Padding(
47-
padding: EdgeInsets.only(left: 10, right: 10),
41+
padding: EdgeInsets.symmetric(horizontal: 10),
4842
child: AntennaList(),
4943
),
5044
);

lib/view/antenna_page/antenna_settings_dialog.dart

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ import "package:miria/model/account.dart";
99
import "package:miria/model/antenna_settings.dart";
1010
import "package:miria/providers.dart";
1111
import "package:miria/router/app_router.dart";
12+
import "package:miria/view/antenna_page/antennas_notifier.dart";
1213
import "package:miria/view/common/account_scope.dart";
14+
import "package:miria/view/common/dialog/dialog_state.dart";
1315
import "package:misskey_dart/misskey_dart.dart";
1416
import "package:riverpod_annotation/riverpod_annotation.dart";
1517

@@ -107,11 +109,13 @@ class AntennaSettingsDialog extends StatelessWidget
107109
super.key,
108110
this.title,
109111
this.initialSettings = const AntennaSettings(),
112+
this.antennaId,
110113
});
111114

112115
final Widget? title;
113116
final AntennaSettings initialSettings;
114117
final Account account;
118+
final String? antennaId;
115119

116120
@override
117121
Widget build(BuildContext context) {
@@ -126,6 +130,7 @@ class AntennaSettingsDialog extends StatelessWidget
126130
width: MediaQuery.of(context).size.width * 0.8,
127131
child: AntennaSettingsForm(
128132
account: account,
133+
antennaId: antennaId,
129134
),
130135
),
131136
),
@@ -140,10 +145,12 @@ class AntennaSettingsDialog extends StatelessWidget
140145
class AntennaSettingsForm extends HookConsumerWidget {
141146
const AntennaSettingsForm({
142147
required this.account,
148+
this.antennaId,
143149
super.key,
144150
});
145151

146152
final Account account;
153+
final String? antennaId;
147154

148155
@override
149156
Widget build(BuildContext context, WidgetRef ref) {
@@ -152,6 +159,7 @@ class AntennaSettingsForm extends HookConsumerWidget {
152159
final settings = ref.watch(_antennaSettingsNotifierProvider);
153160
final list = ref.watch(_usersListListProvider);
154161
final controller = useTextEditingController();
162+
final antennaNotifer = ref.watch(antennasNotifierProvider.notifier);
155163
useEffect(
156164
() {
157165
controller.text = settings.users.join("\n");
@@ -195,7 +203,7 @@ class AntennaSettingsForm extends HookConsumerWidget {
195203
AntennaSource.home => S.of(context).antennaSourceHome,
196204
AntennaSource.all => S.of(context).antennaSourceAll,
197205
AntennaSource.users => S.of(context).antennaSourceUser,
198-
AntennaSource.usersBlackList => "指定したユーザー以外",
206+
AntennaSource.usersBlackList => S.of(context).antennaSourceUsersBlackList,
199207
AntennaSource.list => S.of(context).antennaSourceList,
200208
},
201209
),
@@ -334,19 +342,25 @@ class AntennaSettingsForm extends HookConsumerWidget {
334342
// notifyは機能していない?
335343
Center(
336344
child: ElevatedButton(
337-
child: Text(S.of(context).done),
338-
onPressed: () {
339-
if (formKey.value.currentState!.validate()) {
340-
formKey.value.currentState!.save();
341-
final settings = ref.read(_antennaSettingsNotifierProvider);
342-
if (settings == initialSettings) {
343-
Navigator.of(context).pop();
344-
} else {
345-
Navigator.of(context).pop(settings);
345+
child: Text(S.of(context).done),
346+
onPressed: () async {
347+
if (formKey.value.currentState!.validate()) {
348+
formKey.value.currentState!.save();
349+
final settings = ref.read(_antennaSettingsNotifierProvider);
350+
var f = false;
351+
if (antennaId != null) {
352+
f = await antennaNotifer.updateAntenna(
353+
antennaId!, settings);
354+
} else {
355+
f = await antennaNotifer.create(settings);
356+
}
357+
if (f) {
358+
if (!context.mounted) return;
359+
Navigator.of(context).pop();
360+
}
346361
}
347-
}
348-
},
349-
),
362+
},
363+
),
350364
),
351365
],
352366
),

lib/view/antenna_page/antennas_notifier.dart

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import "package:flutter_gen/gen_l10n/app_localizations.dart";
12
import "package:miria/model/antenna_settings.dart";
23
import "package:miria/providers.dart";
34
import "package:miria/view/common/dialog/dialog_state.dart";
@@ -16,7 +17,7 @@ class AntennasNotifier extends _$AntennasNotifier {
1617
return response.toList();
1718
}
1819

19-
Future<void> create(AntennaSettings settings) async {
20+
Future<bool> create(AntennaSettings settings) async {
2021
await ref.read(dialogStateNotifierProvider.notifier).guard(() async {
2122
final antenna = await _misskey.antennas.create(
2223
AntennasCreateRequest(
@@ -33,7 +34,9 @@ class AntennasNotifier extends _$AntennasNotifier {
3334
),
3435
);
3536
state = AsyncValue.data([...?state.valueOrNull, antenna]);
37+
return true;
3638
});
39+
return false;
3740
}
3841

3942
Future<void> delete(String antennaId) async {
@@ -46,10 +49,11 @@ class AntennasNotifier extends _$AntennasNotifier {
4649
});
4750
}
4851

49-
Future<void> updateAntenna(
52+
Future<bool> updateAntenna(
5053
String antennaId,
5154
AntennaSettings settings,
5255
) async {
56+
var f = false;
5357
await ref.read(dialogStateNotifierProvider.notifier).guard(() async {
5458
await _misskey.antennas.update(
5559
AntennasUpdateRequest(
@@ -66,6 +70,7 @@ class AntennasNotifier extends _$AntennasNotifier {
6670
localOnly: settings.localOnly,
6771
),
6872
);
73+
f = true;
6974
});
7075

7176
state = AsyncValue.data([
@@ -85,5 +90,6 @@ class AntennasNotifier extends _$AntennasNotifier {
8590
)
8691
: antenna,
8792
]);
93+
return f;
8894
}
8995
}

lib/view/antenna_page/antennas_notifier.g.dart

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)