finished implementation

This commit is contained in:
Fabian Freund
2025-09-14 11:41:01 +02:00
parent ac0f3b5dcc
commit a8334ae684
30 changed files with 848 additions and 83 deletions
@@ -0,0 +1,53 @@
import 'dart:convert';
import 'package:flutter/services.dart' show rootBundle;
import 'package:path/path.dart' as p;
import 'package:path_provider/path_provider.dart' as path_provider;
import 'package:pluggable_transports_proxy/pluggable_transports_proxy.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:universal_io/io.dart';
part 'builtin_bridges.g.dart';
@Riverpod(keepAlive: true)
class BuiltinBridgesService extends _$BuiltinBridgesService {
late final _bridgeFileFuture = path_provider
.getApplicationSupportDirectory()
.then((dir) => File(p.join(dir.path, 'builtin-bridges.json')));
Future<DateTime?> lastUpdate() async {
final bridgeFile = await _bridgeFileFuture;
if (!await bridgeFile.exists()) {
return null;
}
return bridgeFile.lastModified();
}
Future<void> updateStoredBuiltinBridges(BuiltInBridges bridges) async {
final bridgeFile = await _bridgeFileFuture;
await bridgeFile.writeAsString(jsonEncode(bridges.toJson()), flush: true);
}
Future<BuiltInBridges?> getStoredBuiltinBridges() async {
final bridgeFile = await _bridgeFileFuture;
if (!await bridgeFile.exists()) {
return null;
}
final content = await bridgeFile.readAsString();
return BuiltInBridges.fromJson(jsonDecode(content) as Map<String, dynamic>);
}
Future<BuiltInBridges> getBundledBuiltinBridges() async {
final content = await rootBundle.loadString(
'assets/preferences/builtin-bridges.json',
);
return BuiltInBridges.fromJson(jsonDecode(content) as Map<String, dynamic>);
}
@override
void build() {
return;
}
}
@@ -0,0 +1,27 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'builtin_bridges.dart';
// **************************************************************************
// RiverpodGenerator
// **************************************************************************
String _$builtinBridgesServiceHash() =>
r'beacb3c9d8c5a7179c7c9cad8024d128b09241f5';
/// See also [BuiltinBridgesService].
@ProviderFor(BuiltinBridgesService)
final builtinBridgesServiceProvider =
NotifierProvider<BuiltinBridgesService, void>.internal(
BuiltinBridgesService.new,
name: r'builtinBridgesServiceProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$builtinBridgesServiceHash,
dependencies: null,
allTransitiveDependencies: null,
);
typedef _$BuiltinBridgesService = Notifier<void>;
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package