madari-oss/lib/utils/load_language.dart
Madari Developers 2cba15132b Project import generated by Copybara.
GitOrigin-RevId: f4c147c7549de641b05ccec9b800842278b45b0f
2025-01-04 14:30:54 +00:00

65 lines
1.8 KiB
Dart

import 'dart:convert';
import 'package:flutter/cupertino.dart';
import 'package:json_annotation/json_annotation.dart';
import 'package:madari_client/utils/external_player.dart';
import '../engine/engine.dart';
part 'load_language.g.dart';
Future<Map<String, String>> loadLanguages(BuildContext context) async {
final data = await DefaultAssetBundle.of(context)
.loadString("assets/data/languages.json");
final result = jsonDecode(data);
final Map<String, String> availableLanguages = {};
for (final entry in result.entries) {
availableLanguages[(entry as MapEntry).key as String] =
entry.value as String;
}
return availableLanguages;
}
PlaybackConfig getPlaybackConfig() {
final user = AppEngine.engine.pb.authStore.record;
if (user == null) {
throw Exception('User not authenticated');
}
final config = user.data['config'] as Map<String, dynamic>? ?? {};
final playbackConfig = config['playback'] as Map<String, dynamic>? ?? {};
return PlaybackConfig.fromJson(playbackConfig);
}
@JsonSerializable()
class PlaybackConfig {
final bool autoPlay;
final double playbackSpeed;
final String defaultAudioTrack;
final String defaultSubtitleTrack;
final bool externalPlayer;
final Map<String, String>? externalPlayerId;
PlaybackConfig({
required this.autoPlay,
required this.playbackSpeed,
required this.defaultAudioTrack,
required this.defaultSubtitleTrack,
required this.externalPlayer,
this.externalPlayerId,
});
String? get currentPlayerPackage {
return externalPlayerId?.containsKey(getPlatformInString()) == true
? externalPlayerId![getPlatformInString()]
: null;
}
factory PlaybackConfig.fromJson(Map<String, dynamic> config) =>
_$PlaybackConfigFromJson(config);
}