mirror of
https://git.selfprivacy.org/kherel/selfprivacy.org.app.git
synced 2024-09-29 23:07:51 +00:00
fix
This commit is contained in:
parent
97c6fa435d
commit
3c683bef63
|
@ -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": {
|
||||||
|
|
|
@ -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": {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -80,7 +80,8 @@ 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 {
|
||||||
|
var res = [
|
||||||
isHetznerFilled,
|
isHetznerFilled,
|
||||||
isCloudFlareFilled,
|
isCloudFlareFilled,
|
||||||
isBackblazeFilled,
|
isBackblazeFilled,
|
||||||
|
@ -91,6 +92,9 @@ class AppConfigState extends Equatable {
|
||||||
isServerReseted,
|
isServerReseted,
|
||||||
hasFinalChecked,
|
hasFinalChecked,
|
||||||
];
|
];
|
||||||
|
print('progress: $res');
|
||||||
|
return res;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class InitialAppConfigState extends AppConfigState {
|
class InitialAppConfigState extends AppConfigState {
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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(),
|
||||||
),
|
),
|
||||||
|
|
Loading…
Reference in a new issue