feat: New account data wallpaper feature
This commit is contained in:
parent
26f4e99006
commit
3b9245c8c7
11 changed files with 262 additions and 34 deletions
|
|
@ -1,7 +1,12 @@
|
|||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:file_picker/file_picker.dart';
|
||||
import 'package:future_loading_dialog/future_loading_dialog.dart';
|
||||
|
||||
import 'package:fluffychat/config/app_config.dart';
|
||||
import 'package:fluffychat/config/setting_keys.dart';
|
||||
import 'package:fluffychat/utils/account_config.dart';
|
||||
import 'package:fluffychat/widgets/app_lock.dart';
|
||||
import 'package:fluffychat/widgets/theme_builder.dart';
|
||||
import '../../widgets/matrix.dart';
|
||||
import 'settings_style_view.dart';
|
||||
|
|
@ -19,6 +24,51 @@ class SettingsStyleController extends State<SettingsStyle> {
|
|||
ThemeController.of(context).setPrimaryColor(color);
|
||||
}
|
||||
|
||||
void setWallpaper() async {
|
||||
final client = Matrix.of(context).client;
|
||||
final picked = await AppLock.of(context).pauseWhile(
|
||||
FilePicker.platform.pickFiles(
|
||||
type: FileType.image,
|
||||
withData: true,
|
||||
),
|
||||
);
|
||||
final pickedFile = picked?.files.firstOrNull;
|
||||
if (pickedFile == null) return;
|
||||
|
||||
await showFutureLoadingDialog(
|
||||
context: context,
|
||||
future: () async {
|
||||
final url = await client.uploadContent(
|
||||
pickedFile.bytes!,
|
||||
filename: pickedFile.name,
|
||||
);
|
||||
await client.updateApplicationAccountConfig(
|
||||
ApplicationAccountConfig(wallpaperUrl: url),
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
void setChatWallpaperOpacity(double opacity) {
|
||||
final client = Matrix.of(context).client;
|
||||
showFutureLoadingDialog(
|
||||
context: context,
|
||||
future: () => client.updateApplicationAccountConfig(
|
||||
ApplicationAccountConfig(wallpaperOpacity: opacity),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
void deleteChatWallpaper() => showFutureLoadingDialog(
|
||||
context: context,
|
||||
future: () => Matrix.of(context).client.setApplicationAccountConfig(
|
||||
const ApplicationAccountConfig(
|
||||
wallpaperUrl: null,
|
||||
wallpaperOpacity: null,
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
ThemeMode get currentTheme => ThemeController.of(context).themeMode;
|
||||
Color? get currentColor => ThemeController.of(context).primaryColor;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue