privacy_settings_controller.dart 1.46 KB
import 'package:doublefeel_flutter/core/network/api/user_api.dart';
import 'package:doublefeel_flutter/core/result/app_result.dart';
import 'package:doublefeel_flutter/data/local/user_preferences_storage.dart';
import 'package:doublefeel_flutter/data/models/user/user_models.dart';
import 'package:get/get.dart';

class PrivacySettingsController extends GetxController {
  PrivacySettingsController(this._userApi, this._userPreferencesStorage);

  final UserApi _userApi;
  final UserPreferencesStorage _userPreferencesStorage;

  final enableAddWithUCode = false.obs;
  final isUpdatingEnableAddWithUCode = false.obs;

  @override
  void onInit() {
    enableAddWithUCode.value = _userPreferencesStorage
            .preferences.value.meUserInfo?.enableAddWithUCode ==
        1;
    super.onInit();
  }

  Future<void> updateEnableAddWithUCode(bool enabled) async {
    if (isUpdatingEnableAddWithUCode.value) return;

    isUpdatingEnableAddWithUCode.value = true;
    try {
      final result = await _userApi.updateOwnerUserInfo(
        enableAddWithUcode: enabled ? 0 : 1,
      );
      if (result is AppSuccess<UserInfoResponse>) {
        await _userPreferencesStorage.updateMeUserInfo(result.data);
        enableAddWithUCode.value = result.data.enableAddWithUCode == null
            ? enabled
            : result.data.enableAddWithUCode == 1;
      }
    } finally {
      isUpdatingEnableAddWithUCode.value = false;
    }
  }

  void executeBackLogic() {
    Get.back();
  }
}