156 lines
6.2 KiB
Dart
156 lines
6.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:material_symbols_icons/symbols.dart';
|
|
|
|
import '../../widgets/connection_status.dart';
|
|
|
|
import '../../../core/config/komet_settings.dart';
|
|
import '../../../main.dart';
|
|
import '../../widgets/section_header.dart';
|
|
import '../../widgets/settings_card.dart';
|
|
|
|
class KometSettingsScreen extends StatelessWidget {
|
|
const KometSettingsScreen({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final cs = Theme.of(context).colorScheme;
|
|
|
|
return Scaffold(
|
|
backgroundColor: cs.surface,
|
|
appBar: ConnectionTitleBar(
|
|
titleText: 'Komet',
|
|
backgroundColor: cs.surface,
|
|
),
|
|
body: SafeArea(
|
|
top: false,
|
|
child: ListView(
|
|
physics: const BouncingScrollPhysics(),
|
|
padding: const EdgeInsets.fromLTRB(16, 12, 16, 120),
|
|
children: [
|
|
const SectionHeader(
|
|
'Сообщения',
|
|
padding: EdgeInsets.fromLTRB(8, 0, 8, 8),
|
|
fontSize: 14,
|
|
),
|
|
SettingsCard(
|
|
children: [
|
|
ValueListenableBuilder<bool>(
|
|
valueListenable: KometSettings.viewDeleted,
|
|
builder: (context, value, _) => SettingsToggleTile(
|
|
icon: Symbols.delete_history,
|
|
label: 'View deleted message',
|
|
subtitle: 'Показывать удалённые сообщения',
|
|
value: value,
|
|
onChanged: KometSettings.setViewDeleted,
|
|
),
|
|
),
|
|
ValueListenableBuilder<bool>(
|
|
valueListenable: KometSettings.viewRedacted,
|
|
builder: (context, value, _) => SettingsToggleTile(
|
|
icon: Symbols.history_edu,
|
|
label: 'View redacted message history',
|
|
subtitle: 'Показывать историю у редактированных сообщений',
|
|
value: value,
|
|
onChanged: KometSettings.setViewRedacted,
|
|
),
|
|
),
|
|
ValueListenableBuilder<bool>(
|
|
valueListenable: KometSettings.fullTimestamp,
|
|
builder: (context, value, _) => SettingsToggleTile(
|
|
icon: Symbols.schedule,
|
|
label: 'View full timestamp',
|
|
subtitle: 'Показывать время в секундах у сообщений',
|
|
value: value,
|
|
onChanged: KometSettings.setFullTimestamp,
|
|
),
|
|
),
|
|
],
|
|
),
|
|
const SizedBox(height: 20),
|
|
const SectionHeader(
|
|
'Папки',
|
|
padding: EdgeInsets.fromLTRB(8, 0, 8, 8),
|
|
fontSize: 14,
|
|
),
|
|
SettingsCard(
|
|
children: [
|
|
ValueListenableBuilder<bool>(
|
|
valueListenable: KometSettings.hideAllChatsFolder,
|
|
builder: (context, value, _) => SettingsToggleTile(
|
|
icon: Symbols.folder_off,
|
|
label: 'Hide "All" folder',
|
|
subtitle:
|
|
'Скрыть папку «Все», когда есть другие папки. '
|
|
'Чаты сортируются только по вашим папкам',
|
|
value: value,
|
|
onChanged: KometSettings.setHideAllChatsFolder,
|
|
),
|
|
),
|
|
ValueListenableBuilder<bool>(
|
|
valueListenable: KometSettings.showHiddenChats,
|
|
builder: (context, value, _) => SettingsToggleTile(
|
|
icon: Symbols.visibility_lock,
|
|
label: 'Show hidden chats',
|
|
subtitle:
|
|
'Показывать скрытые чаты (например, от групповых '
|
|
'звонков), которые обычно не отображаются в списке',
|
|
value: value,
|
|
onChanged: KometSettings.setShowHiddenChats,
|
|
),
|
|
),
|
|
],
|
|
),
|
|
const SizedBox(height: 20),
|
|
const SectionHeader(
|
|
'Ghost Mode',
|
|
padding: EdgeInsets.fromLTRB(8, 0, 8, 8),
|
|
fontSize: 14,
|
|
),
|
|
SettingsCard(
|
|
children: [
|
|
ValueListenableBuilder<bool>(
|
|
valueListenable: KometSettings.ghostMode,
|
|
builder: (context, value, _) => SettingsToggleTile(
|
|
icon: Symbols.visibility_off,
|
|
label: 'Ghost Mode',
|
|
subtitle: 'Вас не видно в сети',
|
|
value: value,
|
|
onChanged: _setGhostMode,
|
|
),
|
|
),
|
|
ValueListenableBuilder<bool>(
|
|
valueListenable: KometSettings.antiRead,
|
|
builder: (context, value, _) => SettingsToggleTile(
|
|
icon: Symbols.mark_chat_read,
|
|
label: 'Anti read',
|
|
subtitle: 'Нечиталка сообщений',
|
|
value: value,
|
|
onChanged: KometSettings.setAntiRead,
|
|
),
|
|
),
|
|
ValueListenableBuilder<bool>(
|
|
valueListenable: KometSettings.selfOnlineCheck,
|
|
builder: (context, value, _) => SettingsToggleTile(
|
|
icon: Symbols.radar,
|
|
label: 'Self Online Check',
|
|
subtitle:
|
|
'Каждые ~10 секунд сверяет, когда вы были онлайн. '
|
|
'Полезно для проверки ghost mode',
|
|
value: value,
|
|
onChanged: KometSettings.setSelfOnlineCheck,
|
|
),
|
|
),
|
|
],
|
|
),
|
|
],
|
|
),
|
|
),
|
|
);
|
|
}
|
|
|
|
Future<void> _setGhostMode(bool value) async {
|
|
await KometSettings.setGhostMode(value);
|
|
api.sendPing(interactive: !value);
|
|
}
|
|
}
|