Skip to content

Commit 3402444

Browse files
authored
Merge pull request #378 from mumu-lhl/fix/not-show-not-support-notice-on-android
fix: not show not support notice on android
2 parents a652a16 + e093ad4 commit 3402444

File tree

5 files changed

+64
-72
lines changed

5 files changed

+64
-72
lines changed

.vscode/launch.json

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
// Use IntelliSense to learn about possible attributes.
3+
// Hover to view descriptions of existing attributes.
4+
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5+
"version": "0.2.0",
6+
"configurations": [
7+
{
8+
"name": "Flutter",
9+
"type": "dart",
10+
"request": "launch",
11+
"program": "lib/main.dart"
12+
},
13+
{
14+
"name": "Flutter (Dev Flavour)",
15+
"type": "dart",
16+
"request": "launch",
17+
"program": "lib/main.dart",
18+
"args": ["--flavor", "dev"]
19+
},
20+
]
21+
}

lib/pages/manage_dictionaries/main.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class AddButton extends StatelessWidget {
3939
if (Platform.isAndroid) {
4040
PlatformMethod.openDirectory();
4141
} else {
42-
selectMdxOrMdd(context, true);
42+
selectMdxOrMddOnDesktop(context, true);
4343
}
4444
},
4545
);

lib/pages/settings/audio.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ class AudioList extends StatelessWidget {
8383
if (Platform.isAndroid) {
8484
PlatformMethod.openAudioDirectory();
8585
} else {
86-
await selectMdxOrMdd(context, false);
86+
await selectMdxOrMddOnDesktop(context, false);
8787
}
8888
},
8989
),

lib/services/dictionary.dart

Lines changed: 37 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import "package:go_router/go_router.dart";
1515
import "package:html_unescape/html_unescape_small.dart";
1616
import "package:mime/mime.dart";
1717
import "package:path/path.dart";
18+
import "package:path_provider/path_provider.dart";
1819
import "package:provider/provider.dart";
1920

2021
import "../database/dictionary/dictionary.dart";
@@ -100,12 +101,6 @@ class Mdict {
100101
Mdict({required this.path});
101102

102103
Future<bool> add() async {
103-
try {
104-
await dictionaryListDao.getId(path);
105-
return false;
106-
// ignore: empty_catches
107-
} catch (e) {}
108-
109104
await _initDictReader(path);
110105

111106
await dictionaryListDao.add(path);
@@ -384,33 +379,35 @@ class Mdict {
384379

385380
Future<void> selectMdx(BuildContext context, List<String> paths) async {
386381
for (final path in paths) {
387-
if (context.mounted) {
388-
Mdict? tmpDict;
389-
try {
390-
final pathNoExtension = setExtension(path, "");
391-
tmpDict = Mdict(path: pathNoExtension);
392-
await tmpDict.add();
393-
} catch (e) {
394-
if (context.mounted) {
395-
final snackBar =
396-
SnackBar(content: Text(AppLocalizations.of(context)!.notSupport));
397-
ScaffoldMessenger.of(context).showSnackBar(snackBar);
398-
}
399-
} finally {
400-
if (tmpDict != null) {
401-
await tmpDict.close();
402-
}
403-
}
382+
if (await dictionaryListDao.dictionaryExist(path)) {
383+
continue;
404384
}
405385

406-
if (paths.isNotEmpty && context.mounted) {
407-
context.read<ManageDictionariesModel>().update();
408-
context.pop();
386+
Mdict? tmpDict;
387+
try {
388+
final pathNoExtension = setExtension(path, "");
389+
tmpDict = Mdict(path: pathNoExtension);
390+
await tmpDict.add();
391+
await tmpDict.close();
392+
} catch (e) {
393+
if (context.mounted) {
394+
final snackBar =
395+
SnackBar(content: Text(AppLocalizations.of(context)!.notSupport));
396+
ScaffoldMessenger.of(context).showSnackBar(snackBar);
397+
}
398+
399+
// Why? Don't know. Strange!
400+
continue;
409401
}
410402
}
403+
404+
if (paths.isNotEmpty && context.mounted) {
405+
context.read<ManageDictionariesModel>().update();
406+
context.pop();
407+
}
411408
}
412409

413-
Future<void> selectMdd(BuildContext context, List<String> paths) async {
410+
Future<void> selectAudioMdd(BuildContext context, List<String> paths) async {
414411
for (final path in paths) {
415412
if (await mddAudioListDao.existMddAudio(path)) {
416413
continue;
@@ -466,7 +463,7 @@ Future<void> selectMdd(BuildContext context, List<String> paths) async {
466463
}
467464
}
468465

469-
Future<void> selectMdxOrMdd(BuildContext context, bool isMdx) async {
466+
Future<void> selectMdxOrMddOnDesktop(BuildContext context, bool isMdx) async {
470467
final XTypeGroup typeGroup = XTypeGroup(
471468
label: "${isMdx ? "MDX" : "MDD"} File",
472469
extensions: <String>[isMdx ? "mdx" : "mdd"],
@@ -484,14 +481,14 @@ Future<void> selectMdxOrMdd(BuildContext context, bool isMdx) async {
484481
if (isMdx) {
485482
await selectMdx(context, files.map((e) => e.path).toList());
486483
} else {
487-
await selectMdd(context, files.map((e) => e.path).toList());
484+
await selectAudioMdd(context, files.map((e) => e.path).toList());
488485
}
489486
}
490487
}
491488

492489
Future<void> findAllFileByExtension(
493-
Directory dir, List<String> output, String extension) async {
494-
final entities = await dir.list().toList();
490+
Directory startDir, List<String> output, String extension) async {
491+
final entities = await startDir.list().toList();
495492
for (final entity in entities) {
496493
if (entity is File) {
497494
if (entity.path.endsWith(extension)) {
@@ -502,3 +499,12 @@ Future<void> findAllFileByExtension(
502499
}
503500
}
504501
}
502+
503+
Future<List<String>> findMdxFilesOnAndroid() async {
504+
final documentsDir = Directory(
505+
join((await getApplicationSupportDirectory()).path, "dictionaries"));
506+
final mdxFiles = <String>[];
507+
await findAllFileByExtension(documentsDir, mdxFiles, "mdx");
508+
509+
return mdxFiles;
510+
}

lib/services/platform.dart

Lines changed: 4 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import "dart:io";
22

3-
import "package:ciyue/pages/manage_dictionaries/main.dart";
43
import "package:ciyue/services/audio.dart";
54
import "package:ciyue/services/dictionary.dart";
65
import "package:ciyue/main.dart";
@@ -10,41 +9,11 @@ import "package:ciyue/src/generated/i18n/app_localizations.dart";
109
import "package:ciyue/viewModels/home.dart";
1110
import "package:ciyue/widget/loading_dialog.dart";
1211
import "package:flutter/services.dart";
13-
import "package:path/path.dart";
14-
import "package:path_provider/path_provider.dart";
1512
import "package:flutter_local_notifications/flutter_local_notifications.dart";
1613
import "package:provider/provider.dart";
1714

1815
const _platform = MethodChannel("org.eu.mumulhl.ciyue");
1916

20-
Future<void> _updateAllDictionaries() async {
21-
final documentsDir = Directory(
22-
join((await getApplicationSupportDirectory()).path, "dictionaries"));
23-
final entities = await documentsDir.list(followLinks: false).toList();
24-
await _addDictionaries(entities);
25-
}
26-
27-
Future<void> _addDictionaries(List<FileSystemEntity> entities) async {
28-
for (final entity in entities) {
29-
if (entity is File) {
30-
if (!entity.path.endsWith(".mdx")) continue;
31-
if (await dictionaryListDao.dictionaryExist(entity.path)) continue;
32-
33-
try {
34-
final path = setExtension(entity.path, "");
35-
final tmpDict = Mdict(path: path);
36-
if (await tmpDict.add()) {
37-
await tmpDict.close();
38-
}
39-
// ignore: empty_catches
40-
} catch (e) {}
41-
} else {
42-
final entities = await (entity as Directory).list().toList();
43-
await _addDictionaries(entities);
44-
}
45-
}
46-
}
47-
4817
class PlatformMethod {
4918
static Future<void> createFile(String content) async {
5019
await _platform.invokeMethod("createFile", content);
@@ -73,21 +42,17 @@ class PlatformMethod {
7342
case "inputDirectory":
7443
await prefs.setString(
7544
"dictionariesDirectory", call.arguments as String);
76-
await _updateAllDictionaries();
77-
78-
router.pop();
7945

80-
Provider.of<ManageDictionariesModel>(navigatorKey.currentContext!,
81-
listen: false)
82-
.update();
46+
final mdxFiles = await findMdxFilesOnAndroid();
47+
await selectMdx(navigatorKey.currentContext!, mdxFiles);
8348

8449
break;
8550

8651
case "inputAudioDirectory":
8752
await prefs.setString("audioDirectory", call.arguments as String);
8853

89-
final paths = await findMddAudioFilesOnAndroid();
90-
await selectMdd(navigatorKey.currentContext!, paths);
54+
final paths = (await findMddAudioFilesOnAndroid());
55+
await selectAudioMdd(navigatorKey.currentContext!, paths);
9156

9257
break;
9358

0 commit comments

Comments
 (0)