Skip to content

Commit 5815837

Browse files
committed
feat: change repos in extensions settings
1 parent a6bfb30 commit 5815837

File tree

3 files changed

+92
-61
lines changed

3 files changed

+92
-61
lines changed

lib/Functions/GetExtensions.dart

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
1+
import 'package:flutter/material.dart';
12
import 'package:flutter_riverpod/flutter_riverpod.dart';
23
import 'package:get/get.dart';
34

45
import '../Preferences/PrefManager.dart';
6+
import '../Theme/LanguageSwitcher.dart';
7+
import '../Widgets/AlertDialogBuilder.dart';
58
import '../api/Sources/Extensions/extensions_provider.dart';
69
import '../api/Sources/Extensions/fetch_anime_sources.dart';
710
import '../api/Sources/Extensions/fetch_manga_sources.dart';
811
import '../api/Sources/Extensions/fetch_novel_sources.dart';
912
import '../api/Sources/Model/Manga.dart';
1013
import '../api/Sources/Model/Source.dart';
14+
import 'Function.dart';
1115

1216
class Extensions {
1317
static final _provider = ProviderContainer();
@@ -93,4 +97,59 @@ class Extensions {
9397
removeCustomData('novelRepo');
9498
}
9599
}
100+
101+
static Future<void> addRepo(BuildContext context, ItemType type) async {
102+
var text = '';
103+
var theme = Theme.of(context).colorScheme;
104+
AlertDialogBuilder(context)
105+
..setTitle('${type.name.capitalize} ${getString.source}')
106+
..setCustomView(
107+
Obx(
108+
() {
109+
var installedRepo = type == ItemType.anime
110+
? animeRepo.value
111+
: type == ItemType.manga
112+
? mangaRepo.value
113+
: novelRepo.value;
114+
return Column(
115+
mainAxisSize: MainAxisSize.min,
116+
mainAxisAlignment: MainAxisAlignment.start,
117+
crossAxisAlignment: CrossAxisAlignment.start,
118+
children: [
119+
if (installedRepo.isNotEmpty) ...[
120+
GestureDetector(
121+
onTap: () => copyToClipboard(installedRepo),
122+
onLongPress: () =>
123+
Extensions.removeRepo(type),
124+
child: Text(
125+
installedRepo,
126+
style: TextStyle(
127+
fontFamily: 'Poppins',
128+
fontSize: 12.0,
129+
color: theme.onSurface,
130+
),
131+
),
132+
),
133+
const SizedBox(height: 8.0),
134+
],
135+
TextField(
136+
decoration: const InputDecoration(
137+
hintText: 'Repo URL'),
138+
onChanged: (value) => text = value,
139+
),
140+
],
141+
);
142+
},
143+
),
144+
)
145+
..setPositiveButton(
146+
getString.ok,
147+
() {
148+
if (text.isEmpty) return;
149+
setRepo(type, text);
150+
},
151+
)
152+
..setNegativeButton(getString.cancel, null)
153+
..show();
154+
}
96155
}

lib/Screens/Extensions/ExtensionScreen.dart

Lines changed: 1 addition & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ class _BrowseScreenState extends ConsumerState<ExtensionScreen>
3838
_tabBarController.addListener(() {
3939
setState(() {
4040
_textEditingController.clear();
41-
//_isSearch = false;
4241
});
4342
});
4443
}
@@ -83,59 +82,7 @@ class _BrowseScreenState extends ConsumerState<ExtensionScreen>
8382
: _tabBarController.index == 3
8483
? ItemType.manga
8584
: ItemType.novel;
86-
var text = '';
87-
88-
89-
AlertDialogBuilder(context)
90-
..setTitle('${type.name.capitalize} ${getString.source}')
91-
..setCustomView(
92-
Obx(
93-
() {
94-
var installedRepo = _tabBarController.index == 1
95-
? Extensions.animeRepo.value
96-
: _tabBarController.index == 3
97-
? Extensions.mangaRepo.value
98-
: Extensions.novelRepo.value;
99-
return Column(
100-
mainAxisSize: MainAxisSize.min,
101-
mainAxisAlignment: MainAxisAlignment.start,
102-
crossAxisAlignment: CrossAxisAlignment.start,
103-
children: [
104-
if (installedRepo.isNotEmpty) ...[
105-
GestureDetector(
106-
onTap: () => copyToClipboard(installedRepo),
107-
onLongPress: () =>
108-
Extensions.removeRepo(type),
109-
child: Text(
110-
installedRepo,
111-
style: TextStyle(
112-
fontFamily: 'Poppins',
113-
fontSize: 12.0,
114-
color: theme.onSurface,
115-
),
116-
),
117-
),
118-
const SizedBox(height: 8.0),
119-
],
120-
TextField(
121-
decoration: const InputDecoration(
122-
hintText: 'Repo URL'),
123-
onChanged: (value) => text = value,
124-
),
125-
],
126-
);
127-
},
128-
),
129-
)
130-
..setPositiveButton(
131-
getString.ok,
132-
() {
133-
if (text.isEmpty) return;
134-
Extensions.setRepo(type, text);
135-
},
136-
)
137-
..setNegativeButton(getString.cancel, null)
138-
..show();
85+
Extensions.addRepo(context, type);
13986
},
14087
),
14188
IconButton(

lib/Screens/Settings/SettingsExtensionsScreen.dart

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1+
import 'package:dantotsu/Functions/GetExtensions.dart';
12
import 'package:dantotsu/Preferences/PrefManager.dart';
23
import 'package:flutter/material.dart';
4+
import 'package:icons_plus/icons_plus.dart';
35

46
import '../../Adaptor/Settings/SettingsAdaptor.dart';
57
import '../../DataClass/Setting.dart';
68
import '../../Theme/LanguageSwitcher.dart';
9+
import '../../api/Sources/Model/Manga.dart';
710
import 'BaseSettingsScreen.dart';
811

912
class SettingsExtensionsScreen extends StatefulWidget {
@@ -39,13 +42,35 @@ class SettingsExtensionsScreenState extends BaseSettingsScreen {
3942
List<Setting> _buildSettings(BuildContext context) {
4043
return [
4144
Setting(
42-
type: SettingType.switchType,
43-
name: 'Auto Update',
44-
description: 'Auto Update Extensions',
45-
icon: Icons.update,
46-
isChecked: loadData(PrefName.autoUpdateExtensions),
47-
onSwitchChange: (value) =>
48-
saveData(PrefName.autoUpdateExtensions, value)),
45+
type: SettingType.normal,
46+
name: 'Add Anime Repo',
47+
description: 'Add Anime Repo from various sources',
48+
icon: Bootstrap.github,
49+
onClick: () => Extensions.addRepo(context, ItemType.anime),
50+
),
51+
Setting(
52+
type: SettingType.normal,
53+
name: 'Add Manga Repo',
54+
description: 'Add Manga Repo from various sources',
55+
icon: Bootstrap.github,
56+
onClick: () => Extensions.addRepo(context, ItemType.manga),
57+
),
58+
Setting(
59+
type: SettingType.normal,
60+
name: 'Add Novel Repo',
61+
description: 'Add Novel Repo from various sources',
62+
icon: Bootstrap.github,
63+
onClick: () => Extensions.addRepo(context, ItemType.novel),
64+
),
65+
Setting(
66+
type: SettingType.switchType,
67+
name: 'Auto Update',
68+
description: 'Auto Update Extensions',
69+
icon: Icons.update,
70+
isChecked: loadData(PrefName.autoUpdateExtensions),
71+
onSwitchChange: (value) =>
72+
saveData(PrefName.autoUpdateExtensions, value),
73+
),
4974
];
5075
}
5176
}

0 commit comments

Comments
 (0)