This commit is contained in:
otsmr 2025-08-05 13:47:41 +02:00
parent 2bde206a8f
commit b865afe355
3 changed files with 20 additions and 0 deletions

View file

@ -49,6 +49,9 @@ class UserData {
@JsonKey(defaultValue: true)
bool useHighQuality = true;
@JsonKey(defaultValue: false)
bool requestedAudioPermission = false;
@JsonKey(defaultValue: true)
bool showFeedbackShortcut = true;

View file

@ -26,6 +26,8 @@ UserData _$UserDataFromJson(Map<String, dynamic> json) => UserData(
ThemeMode.system
..defaultShowTime = (json['defaultShowTime'] as num?)?.toInt()
..useHighQuality = json['useHighQuality'] as bool? ?? true
..requestedAudioPermission =
json['requestedAudioPermission'] as bool? ?? false
..showFeedbackShortcut = json['showFeedbackShortcut'] as bool? ?? true
..preSelectedEmojies = (json['preSelectedEmojies'] as List<dynamic>?)
?.map((e) => e as String)
@ -84,6 +86,7 @@ Map<String, dynamic> _$UserDataToJson(UserData instance) => <String, dynamic>{
'themeMode': _$ThemeModeEnumMap[instance.themeMode]!,
'defaultShowTime': instance.defaultShowTime,
'useHighQuality': instance.useHighQuality,
'requestedAudioPermission': instance.requestedAudioPermission,
'showFeedbackShortcut': instance.showFeedbackShortcut,
'preSelectedEmojies': instance.preSelectedEmojies,
'autoDownloadOptions': instance.autoDownloadOptions,

View file

@ -13,6 +13,7 @@ import 'package:twonly/src/database/daos/contacts_dao.dart';
import 'package:twonly/src/database/twonly_database.dart';
import 'package:twonly/src/utils/log.dart';
import 'package:twonly/src/utils/misc.dart';
import 'package:twonly/src/utils/storage.dart';
import 'package:twonly/src/views/camera/camera_preview_components/permissions_view.dart';
import 'package:twonly/src/views/camera/camera_preview_components/send_to.dart';
import 'package:twonly/src/views/camera/camera_preview_components/video_recording_time.dart';
@ -171,6 +172,19 @@ class _CameraPreviewViewState extends State<CameraPreviewView> {
Future<void> initAsync() async {
hasAudioPermission = await Permission.microphone.isGranted;
if (!hasAudioPermission) {
final user = await getUser();
if (user != null) {
if (!user.requestedAudioPermission) {
await updateUserdata((u) {
u.requestedAudioPermission = true;
return u;
});
await requestMicrophonePermission();
}
}
}
if (!mounted) return;
setState(() {});
}