- Changed window size to mobile phone format (400x800) - Removed width condition for ActiveProxyFooter - now always visible - Added run-umbrix.sh launch script with icon copying - Stats cards now display on all screen sizes
89 lines
2.5 KiB
Dart
89 lines
2.5 KiB
Dart
import 'package:drift/drift.dart';
|
|
import 'package:umbrix/core/database/app_database.dart';
|
|
import 'package:umbrix/features/profile/model/profile_entity.dart';
|
|
|
|
extension ProfileEntityMapper on ProfileEntity {
|
|
ProfileEntriesCompanion toEntry() {
|
|
return switch (this) {
|
|
RemoteProfileEntity(:final url, :final options, :final subInfo) => ProfileEntriesCompanion.insert(
|
|
id: id,
|
|
type: ProfileType.remote,
|
|
active: active,
|
|
name: name,
|
|
url: Value(url),
|
|
lastUpdate: lastUpdate,
|
|
updateInterval: Value(options?.updateInterval),
|
|
upload: Value(subInfo?.upload),
|
|
download: Value(subInfo?.download),
|
|
total: Value(subInfo?.total),
|
|
expire: Value(subInfo?.expire),
|
|
webPageUrl: Value(subInfo?.webPageUrl),
|
|
supportUrl: Value(subInfo?.supportUrl),
|
|
testUrl: Value(testUrl),
|
|
),
|
|
LocalProfileEntity() => ProfileEntriesCompanion.insert(
|
|
id: id,
|
|
type: ProfileType.local,
|
|
active: active,
|
|
name: name,
|
|
lastUpdate: lastUpdate,
|
|
),
|
|
};
|
|
}
|
|
}
|
|
|
|
extension RemoteProfileEntityMapper on RemoteProfileEntity {
|
|
ProfileEntriesCompanion subInfoPatch() {
|
|
return ProfileEntriesCompanion(
|
|
upload: Value(subInfo?.upload),
|
|
download: Value(subInfo?.download),
|
|
total: Value(subInfo?.total),
|
|
expire: Value(subInfo?.expire),
|
|
webPageUrl: Value(subInfo?.webPageUrl),
|
|
supportUrl: Value(subInfo?.supportUrl),
|
|
testUrl: Value(testUrl),
|
|
);
|
|
}
|
|
}
|
|
|
|
extension ProfileEntryMapper on ProfileEntry {
|
|
ProfileEntity toEntity() {
|
|
ProfileOptions? options;
|
|
if (updateInterval != null) {
|
|
options = ProfileOptions(updateInterval: updateInterval!);
|
|
}
|
|
|
|
SubscriptionInfo? subInfo;
|
|
if (upload != null && download != null && total != null && expire != null) {
|
|
subInfo = SubscriptionInfo(
|
|
upload: upload!,
|
|
download: download!,
|
|
total: total!,
|
|
expire: expire!,
|
|
webPageUrl: webPageUrl,
|
|
supportUrl: supportUrl,
|
|
);
|
|
}
|
|
|
|
return switch (type) {
|
|
ProfileType.remote => RemoteProfileEntity(
|
|
id: id,
|
|
active: active,
|
|
name: name,
|
|
url: url!,
|
|
lastUpdate: lastUpdate,
|
|
options: options,
|
|
subInfo: subInfo,
|
|
testUrl: testUrl,
|
|
),
|
|
ProfileType.local => LocalProfileEntity(
|
|
id: id,
|
|
active: active,
|
|
name: name,
|
|
lastUpdate: lastUpdate,
|
|
testUrl: testUrl,
|
|
),
|
|
};
|
|
}
|
|
}
|