fdroid
Kherel 2021-03-25 09:32:00 +01:00
parent 97c6fa435d
commit 3c683bef63
8 changed files with 96 additions and 63 deletions

View File

@ -21,18 +21,25 @@
"saving": "Saving..", "saving": "Saving..",
"nickname": "nickname", "nickname": "nickname",
"loading": "loading", "loading": "loading",
"later": "Настрою потом" "later": "Настрою потом",
"reset": "Reset"
}, },
"more": { "more": {
"_comment": "'More' tab", "_comment": "'More' tab",
"configuration_wizard": "Setup wizard", "configuration_wizard": "Setup wizard",
"settings": "Application settings",
"about_project": "About us", "about_project": "About us",
"about_app": "About application", "about_app": "About application",
"onboarding": "Onboarding", "onboarding": "Onboarding",
"console": "Console", "console": "Console",
"about_app_page": { "about_app_page": {
"text": "Тут любая служебная информация, v.{}" "text": "Тут любая служебная информация, v.{}"
},
"settings": {
"title": "Application settings",
"1": "Dark Theme",
"2": "Change your the app theme",
"3": "Reset app config",
"4": "Reset api keys and root user"
} }
}, },
"onboarding": { "onboarding": {

View File

@ -21,18 +21,25 @@
"saving": "Сохранение..", "saving": "Сохранение..",
"nickname": "Никнейм", "nickname": "Никнейм",
"loading": "Загрузка", "loading": "Загрузка",
"later": "Настрою потом" "later": "Настрою потом",
"reset": "Reset"
}, },
"more": { "more": {
"_comment": "вкладка еще", "_comment": "вкладка еще",
"configuration_wizard": "Мастер Подключения", "configuration_wizard": "Мастер Подключения",
"settings": "Настройки приложения",
"about_project": "О проекте SelfPrivacy", "about_project": "О проекте SelfPrivacy",
"about_app": "О приложении", "about_app": "О приложении",
"onboarding": "Onboarding", "onboarding": "Onboarding",
"console": "Console", "console": "Console",
"about_app_page": { "about_app_page": {
"text": "Тут любая служебная информация, v.{}" "text": "Тут любая служебная информация, v.{}"
},
"settings": {
"title": "Настройки приложения",
"1": "Темная тема",
"2": "Сменить цветовую тему",
"3": "Сброс настроек",
"4": "Сбросить API ключи а так же root пользвателя"
} }
}, },
"onboarding": { "onboarding": {

View File

@ -13,11 +13,9 @@ class ServerApi extends ApiMap {
Future<bool> isHttpServerWorking() async { Future<bool> isHttpServerWorking() async {
bool res; bool res;
print('start');
Response response; Response response;
try { try {
response = await loggedClient.get('/serviceStatus'); response = await loggedClient.get('/serviceStatus');
print(response);
res = response.statusCode == HttpStatus.ok; res = response.statusCode == HttpStatus.ok;
} catch (e) { } catch (e) {
res = false; res = false;

View File

@ -50,15 +50,10 @@ class AppConfigCubit extends Cubit<AppConfigState> {
if (state.progress < 6 || state.isFullyInitilized) { if (state.progress < 6 || state.isFullyInitilized) {
emit(state); emit(state);
} else if (state.progress == 6) { } else if (state.progress == 6) {
print('startServerIfDnsIsOkay');
startServerIfDnsIsOkay(state: state, isImmediate: true); startServerIfDnsIsOkay(state: state, isImmediate: true);
} else if (state.progress == 7) { } else if (state.progress == 7) {
print('resetServerIfServerIsOkay');
resetServerIfServerIsOkay(state: state, isImmediate: true); resetServerIfServerIsOkay(state: state, isImmediate: true);
} else if (state.progress == 8) { } else if (state.progress == 8) {
print('finishCheckIfServerIsOkay');
finishCheckIfServerIsOkay(state: state, isImmediate: true); finishCheckIfServerIsOkay(state: state, isImmediate: true);
} }
} }
@ -83,6 +78,8 @@ class AppConfigCubit extends Cubit<AppConfigState> {
state.hetznerServer!, state.hetznerServer!,
); );
repository.saveServerDetails(server); repository.saveServerDetails(server);
repository.saveIsServerStarted(true);
emit( emit(
state.copyWith( state.copyWith(
isServerStarted: true, isServerStarted: true,
@ -136,6 +133,9 @@ class AppConfigCubit extends Cubit<AppConfigState> {
state!.hetznerKey, state!.hetznerKey,
state.hetznerServer!, state.hetznerServer!,
); );
repository.saveIsServerReseted(true);
repository.saveServerDetails(hetznerServerDetails);
emit( emit(
state.copyWith( state.copyWith(
isServerReseted: true, isServerReseted: true,
@ -181,7 +181,12 @@ class AppConfigCubit extends Cubit<AppConfigState> {
); );
if (isServerWorking) { if (isServerWorking) {
emit(state.copyWith(hasFinalChecked: true, isLoading: false)); repository.saveHasFinalChecked(true);
emit(state.copyWith(
hasFinalChecked: true,
isLoading: false,
));
} else { } else {
finishCheckIfServerIsOkay(); finishCheckIfServerIsOkay();
} }

View File

@ -21,6 +21,10 @@ class AppConfigRepository {
Box box = Hive.box(BNames.appConfig); Box box = Hive.box(BNames.appConfig);
AppConfigState load() { AppConfigState load() {
// saveIsServerStarted(false);
// saveIsServerReseted(false);
// saveHasFinalChecked(false);
return AppConfigState( return AppConfigState(
hetznerKey: box.get(BNames.hetznerKey), hetznerKey: box.get(BNames.hetznerKey),
cloudFlareKey: box.get(BNames.cloudFlareKey), cloudFlareKey: box.get(BNames.cloudFlareKey),
@ -29,10 +33,10 @@ class AppConfigRepository {
rootUser: box.get(BNames.rootUser), rootUser: box.get(BNames.rootUser),
hetznerServer: box.get(BNames.hetznerServer), hetznerServer: box.get(BNames.hetznerServer),
isServerStarted: box.get(BNames.isServerStarted, defaultValue: false), isServerStarted: box.get(BNames.isServerStarted, defaultValue: false),
error: null,
hasFinalChecked: box.get(BNames.hasFinalChecked, defaultValue: false),
isLoading: box.get(BNames.isLoading, defaultValue: false),
isServerReseted: box.get(BNames.isServerReseted, defaultValue: false), isServerReseted: box.get(BNames.isServerReseted, defaultValue: false),
hasFinalChecked: box.get(BNames.hasFinalChecked, defaultValue: false),
error: null,
isLoading: box.get(BNames.isLoading, defaultValue: false),
); );
} }
@ -40,26 +44,6 @@ class AppConfigRepository {
box.clear(); box.clear();
} }
void saveHetznerKey(String key) {
box.put(BNames.hetznerKey, key);
}
void saveBackblazeKey(BackblazeCredential backblazeCredential) {
box.put(BNames.backblazeKey, backblazeCredential);
}
void saveCloudFlare(String key) {
box.put(BNames.cloudFlareKey, key);
}
void saveDomain(CloudFlareDomain cloudFlareDomain) {
box.put(BNames.cloudFlareDomain, cloudFlareDomain);
}
void saveRootUser(User rootUser) {
box.put(BNames.rootUser, rootUser);
}
Future<HetznerServerDetails> startServer( Future<HetznerServerDetails> startServer(
String? hetznerKey, String? hetznerKey,
HetznerServerDetails hetznerServer, HetznerServerDetails hetznerServer,
@ -67,17 +51,11 @@ class AppConfigRepository {
var hetznerApi = HetznerApi(hetznerKey); var hetznerApi = HetznerApi(hetznerKey);
var serverDetails = await hetznerApi.startServer(server: hetznerServer); var serverDetails = await hetznerApi.startServer(server: hetznerServer);
hetznerApi.close(); hetznerApi.close();
box.put(BNames.isServerStarted, true);
return serverDetails; return serverDetails;
} }
Future<void> saveServerDetails(HetznerServerDetails serverDetails) async {
await box.put(BNames.hetznerServer, serverDetails);
}
Future<bool> isDnsAddressesMatch(String? domainName, String? ip4) async { Future<bool> isDnsAddressesMatch(String? domainName, String? ip4) async {
print(domainName);
var addresses = <String>[ var addresses = <String>[
'$domainName', '$domainName',
'api.$domainName', 'api.$domainName',
@ -111,8 +89,6 @@ class AppConfigRepository {
} }
} }
box.put(BNames.hasFinalChecked, true);
return true; return true;
} }
@ -133,8 +109,8 @@ class AppConfigRepository {
rootUser: rootUser, rootUser: rootUser,
domainName: domainName, domainName: domainName,
); );
await box.put(BNames.hetznerServer, serverDetails);
hetznerApi.close(); hetznerApi.close();
saveServerDetails(serverDetails);
onSuccess(serverDetails); onSuccess(serverDetails);
} on DioError catch (e) { } on DioError catch (e) {
if (e.response!.data['error']['code'] == 'uniqueness_error') { if (e.response!.data['error']['code'] == 'uniqueness_error') {
@ -159,7 +135,7 @@ class AppConfigRepository {
); );
hetznerApi.close(); hetznerApi.close();
await box.put(BNames.hetznerServer, serverDetails); await saveServerDetails(serverDetails);
onSuccess(serverDetails); onSuccess(serverDetails);
}, },
), ),
@ -211,4 +187,40 @@ class AppConfigRepository {
var hetznerApi = HetznerApi(hetznerKey); var hetznerApi = HetznerApi(hetznerKey);
return await hetznerApi.restart(server: server); return await hetznerApi.restart(server: server);
} }
Future<void> saveServerDetails(HetznerServerDetails serverDetails) async {
await box.put(BNames.hetznerServer, serverDetails);
}
Future<void> saveIsServerStarted(bool value) async {
await box.put(BNames.isServerStarted, value);
}
Future<void> saveHetznerKey(String key) async {
await box.put(BNames.hetznerKey, key);
}
Future<void> saveIsServerReseted(bool value) async {
await box.put(BNames.isServerReseted, value);
}
Future<void> saveBackblazeKey(BackblazeCredential backblazeCredential) async {
await box.put(BNames.backblazeKey, backblazeCredential);
}
Future<void> saveCloudFlare(String key) async {
await box.put(BNames.cloudFlareKey, key);
}
void saveDomain(CloudFlareDomain cloudFlareDomain) async {
await box.put(BNames.cloudFlareDomain, cloudFlareDomain);
}
void saveRootUser(User rootUser) async {
await box.put(BNames.rootUser, rootUser);
}
void saveHasFinalChecked(bool value) async {
await box.put(BNames.hasFinalChecked, value);
}
} }

View File

@ -80,17 +80,21 @@ class AppConfigState extends Equatable {
bool get isFullyInitilized => _fulfilementList.every((el) => el!); bool get isFullyInitilized => _fulfilementList.every((el) => el!);
int get progress => _fulfilementList.where((el) => el!).length; int get progress => _fulfilementList.where((el) => el!).length;
List<bool?> get _fulfilementList => [ List<bool?> get _fulfilementList {
isHetznerFilled, var res = [
isCloudFlareFilled, isHetznerFilled,
isBackblazeFilled, isCloudFlareFilled,
isDomainFilled, isBackblazeFilled,
isUserFilled, isDomainFilled,
isServerCreated, isUserFilled,
isServerStarted, isServerCreated,
isServerReseted, isServerStarted,
hasFinalChecked, isServerReseted,
]; hasFinalChecked,
];
print('progress: $res');
return res;
}
} }
class InitialAppConfigState extends AppConfigState { class InitialAppConfigState extends AppConfigState {

View File

@ -28,7 +28,7 @@ class _AppSettingsPageState extends State<AppSettingsPage> {
return Scaffold( return Scaffold(
appBar: PreferredSize( appBar: PreferredSize(
child: child:
BrandHeader(title: 'more.settings'.tr(), hasBackButton: true), BrandHeader(title: 'more.settings.title'.tr(), hasBackButton: true),
preferredSize: Size.fromHeight(52), preferredSize: Size.fromHeight(52),
), ),
body: ListView( body: ListView(
@ -47,8 +47,8 @@ class _AppSettingsPageState extends State<AppSettingsPage> {
children: [ children: [
Flexible( Flexible(
child: _TextColumn( child: _TextColumn(
title: 'Dark Theme', title: 'more.settings.1'.tr(),
value: 'Change your the app theme', value: 'more.settings.2'.tr(),
), ),
), ),
SizedBox(width: 5), SizedBox(width: 5),
@ -75,8 +75,8 @@ class _AppSettingsPageState extends State<AppSettingsPage> {
children: [ children: [
Flexible( Flexible(
child: _TextColumn( child: _TextColumn(
title: 'Reset app config', title: 'more.settings.3'.tr(),
value: 'Reset api keys and root user', value: 'more.settings.4'.tr(),
), ),
), ),
SizedBox(width: 5), SizedBox(width: 5),
@ -85,7 +85,7 @@ class _AppSettingsPageState extends State<AppSettingsPage> {
primary: BrandColors.red1, primary: BrandColors.red1,
), ),
child: Text( child: Text(
'Reset', 'basis.reset'.tr(),
style: TextStyle( style: TextStyle(
color: BrandColors.white, color: BrandColors.white,
fontWeight: NamedFontWeight.demiBold, fontWeight: NamedFontWeight.demiBold,

View File

@ -39,7 +39,7 @@ class MorePage extends StatelessWidget {
goTo: InitializingPage(), goTo: InitializingPage(),
), ),
_NavItem( _NavItem(
title: 'more.settings'.tr(), title: 'more.settings.title'.tr(),
iconData: BrandIcons.settings, iconData: BrandIcons.settings,
goTo: AppSettingsPage(), goTo: AppSettingsPage(),
), ),