- 上游: github.com/OpenIMSDK/openim-flutter-demo tag 3.8.3-patch.3 commit b3dfdb1e8aaeaaf6f0793e10cadd20d5c184a31f - 并行目录 mobile-next/ 原样导入(含 LICENSE),不覆盖现网 mobile/ - 锁定 Flutter 3.24.5 / Dart 3.5.4 / JDK 17 / Gradle 7.6.3 / AGP 7.3.1 - 实测 Android debug 与 release 构建均成功(见 docs/mobile-next-baseline-import.md) - 本提交可单独回退:git revert 1db1229(重写前) Co-authored-by: multica-agent <github@multica.ai>
186 lines
5.3 KiB
Dart
186 lines
5.3 KiB
Dart
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
|
|
import 'package:openim_common/openim_common.dart';
|
|
import 'package:sprintf/sprintf.dart';
|
|
import 'package:uuid/uuid.dart';
|
|
|
|
class DataSp {
|
|
static const _loginCertificate = 'loginCertificate';
|
|
static const _loginAccount = 'loginAccount';
|
|
static const _server = "server";
|
|
static const _ip = 'ip';
|
|
static const _deviceID = 'deviceID';
|
|
static const _ignoreUpdate = 'ignoreUpdate';
|
|
static const _language = "language";
|
|
static const _groupApplication = "%s_groupApplication";
|
|
static const _friendApplication = "%s_friendApplication";
|
|
|
|
static const _screenPassword = '%s_screenPassword';
|
|
static const _enabledBiometric = '%s_enabledBiometric';
|
|
static const _chatFontSizeFactor = '%s_chatFontSizeFactor';
|
|
static const _chatBackground = '%s_chatBackground_%s';
|
|
static const _loginType = 'loginType';
|
|
static const _meetingInProgress = '%_meetingInProgress';
|
|
|
|
DataSp._();
|
|
|
|
static init() async {
|
|
await SpUtil().init();
|
|
}
|
|
|
|
static String getKey(String key, {String key2 = ""}) {
|
|
return sprintf(key, [OpenIM.iMManager.userID, key2]);
|
|
}
|
|
|
|
static String? get imToken => getLoginCertificate()?.imToken;
|
|
|
|
static String? get chatToken => getLoginCertificate()?.chatToken;
|
|
|
|
static String? get userID => getLoginCertificate()?.userID;
|
|
|
|
static Future<bool>? putLoginCertificate(LoginCertificate lc) {
|
|
return SpUtil().putObject(_loginCertificate, lc);
|
|
}
|
|
|
|
static Future<bool>? putLoginAccount(Map map) {
|
|
return SpUtil().putObject(_loginAccount, map);
|
|
}
|
|
|
|
static LoginCertificate? getLoginCertificate() {
|
|
return SpUtil().getObj(_loginCertificate, (v) => LoginCertificate.fromJson(v.cast()));
|
|
}
|
|
|
|
static Future<bool>? removeLoginCertificate() {
|
|
return SpUtil().remove(_loginCertificate);
|
|
}
|
|
|
|
static Map? getLoginAccount() {
|
|
return SpUtil().getObject(_loginAccount);
|
|
}
|
|
|
|
static Future<bool>? putServerConfig(Map<String, String> config) {
|
|
return SpUtil().putObject(_server, config);
|
|
}
|
|
|
|
static Map? getServerConfig() {
|
|
return SpUtil().getObject(_server);
|
|
}
|
|
|
|
static Future<bool>? putServerIP(String ip) {
|
|
return SpUtil().putString(ip, ip);
|
|
}
|
|
|
|
static String? getServerIP() {
|
|
return SpUtil().getString(_ip);
|
|
}
|
|
|
|
static String getDeviceID() {
|
|
String id = SpUtil().getString(_deviceID) ?? '';
|
|
if (id.isEmpty) {
|
|
id = const Uuid().v4();
|
|
SpUtil().putString(_deviceID, id);
|
|
}
|
|
return id;
|
|
}
|
|
|
|
static Future<bool>? putIgnoreVersion(String version) {
|
|
return SpUtil().putString(_ignoreUpdate, version);
|
|
}
|
|
|
|
static String? getIgnoreVersion() {
|
|
return SpUtil().getString(_ignoreUpdate);
|
|
}
|
|
|
|
static Future<bool>? putLanguage(int index) {
|
|
return SpUtil().putInt(_language, index);
|
|
}
|
|
|
|
static int? getLanguage() {
|
|
return SpUtil().getInt(_language);
|
|
}
|
|
|
|
static Future<bool>? putHaveReadUnHandleGroupApplication(List<String> idList) {
|
|
return SpUtil().putStringList(getKey(_groupApplication), idList);
|
|
}
|
|
|
|
static Future<bool>? putHaveReadUnHandleFriendApplication(List<String> idList) {
|
|
return SpUtil().putStringList(getKey(_friendApplication), idList);
|
|
}
|
|
|
|
static List<String>? getHaveReadUnHandleGroupApplication() {
|
|
return SpUtil().getStringList(getKey(_groupApplication), defValue: []);
|
|
}
|
|
|
|
static List<String>? getHaveReadUnHandleFriendApplication() {
|
|
return SpUtil().getStringList(getKey(_friendApplication), defValue: []);
|
|
}
|
|
|
|
static Future<bool>? putLockScreenPassword(String password) {
|
|
return SpUtil().putString(getKey(_screenPassword), password);
|
|
}
|
|
|
|
static Future<bool>? clearLockScreenPassword() {
|
|
return SpUtil().remove(getKey(_screenPassword));
|
|
}
|
|
|
|
static String? getLockScreenPassword() {
|
|
return SpUtil().getString(getKey(_screenPassword), defValue: null);
|
|
}
|
|
|
|
static Future<bool>? openBiometric() {
|
|
return SpUtil().putBool(getKey(_enabledBiometric), true);
|
|
}
|
|
|
|
static bool? isEnabledBiometric() {
|
|
return SpUtil().getBool(getKey(_enabledBiometric), defValue: null);
|
|
}
|
|
|
|
static Future<bool>? closeBiometric() {
|
|
return SpUtil().remove(getKey(_enabledBiometric));
|
|
}
|
|
|
|
static Future<bool>? putChatFontSizeFactor(double factor) {
|
|
return SpUtil().putDouble(getKey(_chatFontSizeFactor), factor);
|
|
}
|
|
|
|
static double getChatFontSizeFactor() {
|
|
return SpUtil().getDouble(
|
|
getKey(_chatFontSizeFactor),
|
|
defValue: Config.textScaleFactor,
|
|
)!;
|
|
}
|
|
|
|
static Future<bool>? putChatBackground(String toUid, String path) {
|
|
return SpUtil().putString(getKey(_chatBackground, key2: toUid), path);
|
|
}
|
|
|
|
static String? getChatBackground(String toUid) {
|
|
return SpUtil().getString(getKey(_chatBackground, key2: toUid));
|
|
}
|
|
|
|
static Future<bool>? clearChatBackground(String toUid) {
|
|
return SpUtil().remove(getKey(_chatBackground, key2: toUid));
|
|
}
|
|
|
|
static Future<bool>? putLoginType(int type) {
|
|
return SpUtil().putInt(_loginType, type);
|
|
}
|
|
|
|
static int getLoginType() {
|
|
return SpUtil().getInt(_loginType) ?? 0;
|
|
}
|
|
|
|
static Future<bool>? putMeetingInProgress(String meetingID) {
|
|
return SpUtil().putString(getKey(_meetingInProgress), meetingID);
|
|
}
|
|
|
|
static String? getMeetingInProgress() {
|
|
return SpUtil().getString(
|
|
getKey(_meetingInProgress),
|
|
);
|
|
}
|
|
|
|
static Future<bool>? removeMeetingInProgress() {
|
|
return SpUtil().remove(getKey(_meetingInProgress));
|
|
}
|
|
}
|