mirror of
https://github.com/jagandeepbrar/lunasea.git
synced 2026-08-31 20:52:32 +00:00
* fix(navbar): Utilize Material 2 Nav Bar * fix(navbar): Revert to original navigation bar
100 lines
2.3 KiB
Dart
100 lines
2.3 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:lunasea/core.dart';
|
|
|
|
enum OverseerrDatabaseValue {
|
|
NAVIGATION_INDEX,
|
|
CONTENT_PAGE_SIZE,
|
|
}
|
|
|
|
class OverseerrDatabase extends LunaModuleDatabase {
|
|
@override
|
|
void registerAdapters() {}
|
|
|
|
@override
|
|
Map<String, dynamic> export() {
|
|
Map<String, dynamic> data = {};
|
|
for (OverseerrDatabaseValue value in OverseerrDatabaseValue.values) {
|
|
switch (value) {
|
|
// Primitive values
|
|
default:
|
|
data[value.key] = value.data;
|
|
break;
|
|
}
|
|
}
|
|
return data;
|
|
}
|
|
|
|
@override
|
|
void import(Map<String, dynamic> config) {
|
|
for (String key in config.keys) {
|
|
OverseerrDatabaseValue? value = valueFromKey(key);
|
|
if (value != null)
|
|
switch (value) {
|
|
// Primitive values
|
|
default:
|
|
value.put(config[key]);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
@override
|
|
OverseerrDatabaseValue? valueFromKey(String key) {
|
|
for (OverseerrDatabaseValue value in OverseerrDatabaseValue.values) {
|
|
if (value.key == key) return value;
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
|
|
extension OverseerrDatabaseValueExtension on OverseerrDatabaseValue {
|
|
String get key {
|
|
return 'OVERSEERR_${this.name}';
|
|
}
|
|
|
|
dynamic get data {
|
|
return Database.lunasea.box.get(this.key, defaultValue: this._defaultValue);
|
|
}
|
|
|
|
void put(dynamic value) {
|
|
if (this._isTypeValid(value)) {
|
|
Database.lunasea.box.put(this.key, value);
|
|
} else {
|
|
LunaLogger().warning(
|
|
this.runtimeType.toString(),
|
|
'put',
|
|
'Invalid Database Insert (${this.key}, ${value.runtimeType})',
|
|
);
|
|
}
|
|
}
|
|
|
|
ValueListenableBuilder listen({
|
|
Key? key,
|
|
required Widget Function(BuildContext, dynamic, Widget?) builder,
|
|
}) {
|
|
return ValueListenableBuilder(
|
|
key: key,
|
|
valueListenable: Database.lunasea.box.listenable(keys: [this.key]),
|
|
builder: builder,
|
|
);
|
|
}
|
|
|
|
bool _isTypeValid(dynamic value) {
|
|
switch (this) {
|
|
case OverseerrDatabaseValue.NAVIGATION_INDEX:
|
|
return value is int;
|
|
case OverseerrDatabaseValue.CONTENT_PAGE_SIZE:
|
|
return value is int;
|
|
}
|
|
}
|
|
|
|
dynamic get _defaultValue {
|
|
switch (this) {
|
|
case OverseerrDatabaseValue.NAVIGATION_INDEX:
|
|
return 0;
|
|
case OverseerrDatabaseValue.CONTENT_PAGE_SIZE:
|
|
return 25;
|
|
}
|
|
}
|
|
}
|