mirror of
https://github.com/JGeek00/adguard-home-manager.git
synced 2025-04-22 23:09:12 +00:00
Database preparations for new features
This commit is contained in:
parent
2f40415ada
commit
a38c9bf4b0
4 changed files with 91 additions and 4 deletions
11
lib/config/home_top_items_default_order.dart
Normal file
11
lib/config/home_top_items_default_order.dart
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
|
import 'package:adguard_home_manager/constants/enums.dart';
|
||||||
|
|
||||||
|
final List<HomeTopItems> homeTopItemsDefaultOrder = [
|
||||||
|
HomeTopItems.queriedDomains,
|
||||||
|
HomeTopItems.blockedDomains,
|
||||||
|
HomeTopItems.recurrentClients
|
||||||
|
];
|
||||||
|
|
||||||
|
final String homeTopItemsDefaultOrderString = jsonEncode(homeTopItemsDefaultOrder);
|
|
@ -1 +1,2 @@
|
||||||
enum LoadStatus { loading, loaded, error }
|
enum LoadStatus { loading, loaded, error }
|
||||||
|
enum HomeTopItems { queriedDomains, blockedDomains, recurrentClients }
|
|
@ -1,10 +1,15 @@
|
||||||
|
import 'dart:convert';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:device_info_plus/device_info_plus.dart';
|
import 'package:device_info_plus/device_info_plus.dart';
|
||||||
import 'package:flutter/scheduler.dart';
|
import 'package:flutter/scheduler.dart';
|
||||||
|
import 'package:sentry_flutter/sentry_flutter.dart';
|
||||||
import 'package:store_checker/store_checker.dart';
|
import 'package:store_checker/store_checker.dart';
|
||||||
import 'package:package_info_plus/package_info_plus.dart';
|
import 'package:package_info_plus/package_info_plus.dart';
|
||||||
import 'package:sqflite/sqlite_api.dart';
|
import 'package:sqflite/sqlite_api.dart';
|
||||||
|
|
||||||
|
import 'package:adguard_home_manager/constants/enums.dart';
|
||||||
|
import 'package:adguard_home_manager/config/home_top_items_default_order.dart';
|
||||||
import 'package:adguard_home_manager/models/github_release.dart';
|
import 'package:adguard_home_manager/models/github_release.dart';
|
||||||
import 'package:adguard_home_manager/services/db/queries.dart';
|
import 'package:adguard_home_manager/services/db/queries.dart';
|
||||||
import 'package:adguard_home_manager/functions/conversions.dart';
|
import 'package:adguard_home_manager/functions/conversions.dart';
|
||||||
|
@ -31,6 +36,8 @@ class AppConfigProvider with ChangeNotifier {
|
||||||
int _selectedClientsTab = 0;
|
int _selectedClientsTab = 0;
|
||||||
int _selectedFiltersTab = 0;
|
int _selectedFiltersTab = 0;
|
||||||
|
|
||||||
|
List<HomeTopItems> _homeTopItemsOrder = homeTopItemsDefaultOrder;
|
||||||
|
|
||||||
final List<AppLog> _logs = [];
|
final List<AppLog> _logs = [];
|
||||||
|
|
||||||
int _overrideSslCheck = 0;
|
int _overrideSslCheck = 0;
|
||||||
|
@ -151,6 +158,10 @@ class AppConfigProvider with ChangeNotifier {
|
||||||
return _installationSource;
|
return _installationSource;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<HomeTopItems> get homeTopItemsOrder {
|
||||||
|
return _homeTopItemsOrder;
|
||||||
|
}
|
||||||
|
|
||||||
void setDbInstance(Database db) {
|
void setDbInstance(Database db) {
|
||||||
_dbInstance = db;
|
_dbInstance = db;
|
||||||
}
|
}
|
||||||
|
@ -353,6 +364,22 @@ class AppConfigProvider with ChangeNotifier {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<bool> setHomeTopItemsOrder(List<HomeTopItems> order) async {
|
||||||
|
final updated = await updateConfigQuery(
|
||||||
|
db: _dbInstance!,
|
||||||
|
column: 'homeTopItemsOrder',
|
||||||
|
value: jsonEncode(order)
|
||||||
|
);
|
||||||
|
if (updated == true) {
|
||||||
|
_homeTopItemsOrder = order;
|
||||||
|
notifyListeners();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Future<bool> setDoNotRememberVersion(String value) async {
|
Future<bool> setDoNotRememberVersion(String value) async {
|
||||||
final updated = await updateConfigQuery(
|
final updated = await updateConfigQuery(
|
||||||
db: _dbInstance!,
|
db: _dbInstance!,
|
||||||
|
@ -373,6 +400,30 @@ class AppConfigProvider with ChangeNotifier {
|
||||||
_doNotRememberVersion = dbData['doNotRememberVersion'];
|
_doNotRememberVersion = dbData['doNotRememberVersion'];
|
||||||
_showIpLogs = dbData['showIpLogs'] ?? 0;
|
_showIpLogs = dbData['showIpLogs'] ?? 0;
|
||||||
_combinedChartHome = dbData['combinedChart'] ?? 0;
|
_combinedChartHome = dbData['combinedChart'] ?? 0;
|
||||||
|
if (dbData['homeTopItemsOrder'] != null) {
|
||||||
|
try {
|
||||||
|
_homeTopItemsOrder = List<HomeTopItems>.from(
|
||||||
|
List<String>.from(jsonDecode(dbData['homeTopItemsOrder'])).map((e) {
|
||||||
|
switch (e) {
|
||||||
|
case 'queriedDomains':
|
||||||
|
return HomeTopItems.queriedDomains;
|
||||||
|
|
||||||
|
case 'blockedDomains':
|
||||||
|
return HomeTopItems.blockedDomains;
|
||||||
|
|
||||||
|
case 'recurrentClients':
|
||||||
|
return HomeTopItems.recurrentClients;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}).where((e) => e != null).toList()
|
||||||
|
);
|
||||||
|
} catch (e) {
|
||||||
|
Sentry.captureException(e);
|
||||||
|
_homeTopItemsOrder = homeTopItemsDefaultOrder;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
_dbInstance = dbInstance;
|
_dbInstance = dbInstance;
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
import 'package:sqflite/sqflite.dart';
|
import 'package:sqflite/sqflite.dart';
|
||||||
|
|
||||||
|
import 'package:adguard_home_manager/config/home_top_items_default_order.dart';
|
||||||
|
|
||||||
Future<Map<String, dynamic>> loadDb(bool acceptsDynamicTheme) async {
|
Future<Map<String, dynamic>> loadDb(bool acceptsDynamicTheme) async {
|
||||||
List<Map<String, Object?>>? servers;
|
List<Map<String, Object?>>? servers;
|
||||||
List<Map<String, Object?>>? appConfig;
|
List<Map<String, Object?>>? appConfig;
|
||||||
|
@ -102,13 +104,25 @@ Future<Map<String, dynamic>> loadDb(bool acceptsDynamicTheme) async {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future upgradeDbToV9(Database db) async {
|
||||||
|
await db.execute("ALTER TABLE appConfig ADD COLUMN hideServerAddress NUMERIC");
|
||||||
|
await db.execute("ALTER TABLE appConfig ADD COLUMN homeTopItemsOrder TEXT");
|
||||||
|
await db.execute("UPDATE appConfig SET hideServerAddress = 0, homeTopItemsOrder = '$homeTopItemsDefaultOrderString'");
|
||||||
|
|
||||||
|
await db.transaction((txn) async{
|
||||||
|
await txn.rawQuery(
|
||||||
|
'SELECT * FROM appConfig',
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
Database db = await openDatabase(
|
Database db = await openDatabase(
|
||||||
'adguard_home_manager.db',
|
'adguard_home_manager.db',
|
||||||
version: 8,
|
version: 9,
|
||||||
onCreate: (Database db, int version) async {
|
onCreate: (Database db, int version) async {
|
||||||
await db.execute("CREATE TABLE servers (id TEXT PRIMARY KEY, name TEXT, connectionMethod TEXT, domain TEXT, path TEXT, port INTEGER, user TEXT, password TEXT, defaultServer INTEGER, authToken TEXT, runningOnHa INTEGER)");
|
await db.execute("CREATE TABLE servers (id TEXT PRIMARY KEY, name TEXT, connectionMethod TEXT, domain TEXT, path TEXT, port INTEGER, user TEXT, password TEXT, defaultServer INTEGER, authToken TEXT, runningOnHa INTEGER)");
|
||||||
await db.execute("CREATE TABLE appConfig (theme NUMERIC, overrideSslCheck NUMERIC, hideZeroValues NUMERIC, useDynamicColor NUMERIC, staticColor NUMERIC, useThemeColorForStatus NUMERIC, showTimeLogs NUMERIC, showIpLogs NUMERIC, combinedChart NUMERIC, doNotRememberVersion TEXT)");
|
await db.execute("CREATE TABLE appConfig (theme NUMERIC, overrideSslCheck NUMERIC, hideZeroValues NUMERIC, useDynamicColor NUMERIC, staticColor NUMERIC, useThemeColorForStatus NUMERIC, showTimeLogs NUMERIC, showIpLogs NUMERIC, combinedChart NUMERIC, doNotRememberVersion TEXT, hideServerAddress NUMERIC, homeTopItemsOrder TEXT)");
|
||||||
await db.execute("INSERT INTO appConfig (theme, overrideSslCheck, hideZeroValues, useDynamicColor, staticColor, useThemeColorForStatus, showTimeLogs, showIpLogs, combinedChart) VALUES (0, 0, 0, ${acceptsDynamicTheme == true ? 1 : 0}, 0, 0, 0, 0, 0)");
|
await db.execute("INSERT INTO appConfig (theme, overrideSslCheck, hideZeroValues, useDynamicColor, staticColor, useThemeColorForStatus, showTimeLogs, showIpLogs, combinedChart, hideServerAddress, homeTopItemsOrder) VALUES (0, 0, 0, ${acceptsDynamicTheme == true ? 1 : 0}, 0, 0, 0, 0, 0, 0, $homeTopItemsDefaultOrderString)");
|
||||||
},
|
},
|
||||||
onUpgrade: (Database db, int oldVersion, int newVersion) async {
|
onUpgrade: (Database db, int oldVersion, int newVersion) async {
|
||||||
if (oldVersion == 1) {
|
if (oldVersion == 1) {
|
||||||
|
@ -119,6 +133,7 @@ Future<Map<String, dynamic>> loadDb(bool acceptsDynamicTheme) async {
|
||||||
await upgradeDbToV6(db);
|
await upgradeDbToV6(db);
|
||||||
await upgradeDbToV7(db);
|
await upgradeDbToV7(db);
|
||||||
await upgradeDbToV8(db);
|
await upgradeDbToV8(db);
|
||||||
|
await upgradeDbToV9(db);
|
||||||
}
|
}
|
||||||
if (oldVersion == 2) {
|
if (oldVersion == 2) {
|
||||||
await upgradeDbToV3(db);
|
await upgradeDbToV3(db);
|
||||||
|
@ -127,6 +142,7 @@ Future<Map<String, dynamic>> loadDb(bool acceptsDynamicTheme) async {
|
||||||
await upgradeDbToV6(db);
|
await upgradeDbToV6(db);
|
||||||
await upgradeDbToV7(db);
|
await upgradeDbToV7(db);
|
||||||
await upgradeDbToV8(db);
|
await upgradeDbToV8(db);
|
||||||
|
await upgradeDbToV9(db);
|
||||||
}
|
}
|
||||||
if (oldVersion == 3) {
|
if (oldVersion == 3) {
|
||||||
await upgradeDbToV4(db);
|
await upgradeDbToV4(db);
|
||||||
|
@ -134,24 +150,32 @@ Future<Map<String, dynamic>> loadDb(bool acceptsDynamicTheme) async {
|
||||||
await upgradeDbToV6(db);
|
await upgradeDbToV6(db);
|
||||||
await upgradeDbToV7(db);
|
await upgradeDbToV7(db);
|
||||||
await upgradeDbToV8(db);
|
await upgradeDbToV8(db);
|
||||||
|
await upgradeDbToV9(db);
|
||||||
}
|
}
|
||||||
if (oldVersion == 4) {
|
if (oldVersion == 4) {
|
||||||
await upgradeDbToV5(db);
|
await upgradeDbToV5(db);
|
||||||
await upgradeDbToV6(db);
|
await upgradeDbToV6(db);
|
||||||
await upgradeDbToV7(db);
|
await upgradeDbToV7(db);
|
||||||
await upgradeDbToV8(db);
|
await upgradeDbToV8(db);
|
||||||
|
await upgradeDbToV9(db);
|
||||||
}
|
}
|
||||||
if (oldVersion == 5) {
|
if (oldVersion == 5) {
|
||||||
await upgradeDbToV6(db);
|
await upgradeDbToV6(db);
|
||||||
await upgradeDbToV7(db);
|
await upgradeDbToV7(db);
|
||||||
await upgradeDbToV8(db);
|
await upgradeDbToV8(db);
|
||||||
|
await upgradeDbToV9(db);
|
||||||
}
|
}
|
||||||
if (oldVersion == 6) {
|
if (oldVersion == 6) {
|
||||||
await upgradeDbToV7(db);
|
await upgradeDbToV7(db);
|
||||||
await upgradeDbToV8(db);
|
await upgradeDbToV8(db);
|
||||||
|
await upgradeDbToV9(db);
|
||||||
}
|
}
|
||||||
if (oldVersion == 7) {
|
if (oldVersion == 7) {
|
||||||
await upgradeDbToV8(db);
|
await upgradeDbToV8(db);
|
||||||
|
await upgradeDbToV9(db);
|
||||||
|
}
|
||||||
|
if (oldVersion == 8) {
|
||||||
|
await upgradeDbToV9(db);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onOpen: (Database db) async {
|
onOpen: (Database db) async {
|
||||||
|
|
Loading…
Add table
Reference in a new issue