mirror of
https://gitlab.com/comunic/comunicmobile
synced 2024-10-23 15:03:22 +00:00
99 lines
2.7 KiB
Dart
99 lines
2.7 KiB
Dart
import 'package:comunic/helpers/settings_helper.dart';
|
|
import 'package:comunic/models/account_image_settings.dart';
|
|
import 'package:comunic/ui/widgets/async_screen_widget.dart';
|
|
import 'package:comunic/ui/widgets/network_image_widget.dart';
|
|
import 'package:comunic/utils/files_utils.dart';
|
|
import 'package:comunic/utils/intl_utils.dart';
|
|
import 'package:comunic/utils/ui_utils.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:settings_ui/settings_ui.dart';
|
|
|
|
/// Account image settings section
|
|
///
|
|
/// @author Pierre Hubert
|
|
|
|
class AccountImageSettingsScreen extends StatelessWidget {
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
appBar: AppBar(
|
|
title: Text(tr("Account image settings")),
|
|
),
|
|
body: _AccountImageSettingsBody(),
|
|
);
|
|
}
|
|
}
|
|
|
|
class _AccountImageSettingsBody extends StatefulWidget {
|
|
@override
|
|
__AccountImageSettingsBodyState createState() =>
|
|
__AccountImageSettingsBodyState();
|
|
}
|
|
|
|
class __AccountImageSettingsBodyState extends State<_AccountImageSettingsBody> {
|
|
AccountImageSettings _settings;
|
|
|
|
final _key = GlobalKey<AsyncScreenWidgetState>();
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return AsyncScreenWidget(
|
|
key: _key,
|
|
onReload: () async =>
|
|
_settings = await SettingsHelper.getAccountImageSettings(),
|
|
onBuild: () => _buildLayout(),
|
|
errorMessage: tr("Could not get account image settings!"),
|
|
);
|
|
}
|
|
|
|
Widget _buildLayout() {
|
|
return SettingsList(
|
|
sections: [
|
|
SettingsSection(
|
|
title: tr("General"),
|
|
tiles: _settings.hasImage
|
|
? _buildHasAccountImageTiles()
|
|
: _buildNoAccountImageTiles(),
|
|
)
|
|
],
|
|
);
|
|
}
|
|
|
|
/// When user has no account image yet
|
|
List<SettingsTile> _buildNoAccountImageTiles() {}
|
|
|
|
/// When the user has an account image
|
|
List<SettingsTile> _buildHasAccountImageTiles() {
|
|
return [
|
|
// Current account image (if any)
|
|
SettingsTile(
|
|
title: tr("Current account image"),
|
|
leading: NetworkImageWidget(
|
|
url: _settings.imageURL,
|
|
width: 40,
|
|
),
|
|
),
|
|
SettingsTile(
|
|
title: tr("Upload new account image"),
|
|
onTap: () => _uploadAccountImage(),
|
|
),
|
|
SettingsTile(title: tr("Change account image visibility")),
|
|
SettingsTile(title: tr("Delete account image"))
|
|
];
|
|
}
|
|
|
|
/// Upload a new account image
|
|
void _uploadAccountImage() async {
|
|
final image = await pickImage(context);
|
|
|
|
if (image == null) return;
|
|
|
|
if (!await SettingsHelper.uploadAccountImage(image)) {
|
|
showSimpleSnack(context, tr("Could not upload your account image!"));
|
|
return;
|
|
}
|
|
|
|
_key.currentState.refresh();
|
|
}
|
|
}
|