File size: 1,559 Bytes
5acd9c3
 
 
5ca5f4b
5acd9c3
 
 
 
5ca5f4b
5acd9c3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5ca5f4b
 
 
 
 
 
 
5acd9c3
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import 'dart:async';

import 'package:shared_preferences/shared_preferences.dart';
import 'package:aitube2/config/config.dart';

class SettingsService {
  static const String _promptPrefixKey = 'video_prompt_prefix';
  static const String _hfApiKeyKey = 'huggingface_api_key';
  static const String _negativePromptKey = 'negative_video_prompt';
  static final SettingsService _instance = SettingsService._internal();
  
  factory SettingsService() => _instance;
  SettingsService._internal();

  late SharedPreferences _prefs;
  final _settingsController = StreamController<void>.broadcast();

  Stream<void> get settingsStream => _settingsController.stream;

  Future<void> initialize() async {
    _prefs = await SharedPreferences.getInstance();
  }

  String get videoPromptPrefix => _prefs.getString(_promptPrefixKey) ?? '';

  Future<void> setVideoPromptPrefix(String prefix) async {
    await _prefs.setString(_promptPrefixKey, prefix);
    _settingsController.add(null);
  }

  String get negativeVideoPrompt => _prefs.getString(_negativePromptKey) ?? Configuration.instance.defaultNegativePrompt;

  Future<void> setNegativeVideoPrompt(String negativePrompt) async {
    await _prefs.setString(_negativePromptKey, negativePrompt);
    _settingsController.add(null);
  }

  String get huggingfaceApiKey => _prefs.getString(_hfApiKeyKey) ?? '';

  Future<void> setHuggingfaceApiKey(String apiKey) async {
    await _prefs.setString(_hfApiKeyKey, apiKey);
    _settingsController.add(null);
  }

  void dispose() {
    _settingsController.close();
  }
}