my_controller.dart 2.05 KB
import 'package:doublefeel_flutter/app/routes/app_pages.dart';
import 'package:doublefeel_flutter/core/network/api/user_api.dart';
import 'package:doublefeel_flutter/core/network/api/vip_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/local/user_preferences.dart';
import 'package:doublefeel_flutter/data/models/user/user_models.dart';
import 'package:get/get.dart';
import 'package:image_picker/image_picker.dart';

class MyController extends GetxController {
  MyController(this._userApi, this._vipApi);

  final UserApi _userApi;
  final VipApi _vipApi;
  final ImagePicker _picker = ImagePicker();

  void updateNickname(String nickname) async {
    final result = await _userApi.updateOwnerUserInfo(nickname: nickname);
    if (result is AppSuccess<UserInfoResponse>) {
      await Get.find<UserPreferencesStorage>().updateMeUserInfo(result.data);
    }
  }

  Future<void> pickAvatar() async {
    final result = await _picker.pickImage(source: ImageSource.gallery);
    if (result != null) {
      var obsUrl = 'https://cdn.couple360.net/couple360/themes/im_theme7.png';
      final updateResult = await _userApi.updateOwnerUserInfo(avatar: obsUrl);
      if (updateResult is AppSuccess<UserInfoResponse>) {
        await Get.find<UserPreferencesStorage>()
            .updateMeUserInfo(updateResult.data);
      }
    }
  }

  void goWatchThemePage() {
    Get.toNamed(
      Routes.WATCH_THEME,
      arguments: {'isPremium': false, 'hasCustomThemes': false},
    );
  }

  void testAppleHealthUpload() {
    Get.toNamed(Routes.APPLE_HEALTH_UPLOAD_TEST);
  }

  Future<void> toPremiumPage() async {
    await Get.toNamed(Routes.PURCHASE);
    final vipResult = await _vipApi.getVipInfo();
    if (vipResult case AppSuccess(data: final vip)) {
      try {
        final vipPrefs = UserPreferencesVipInfo.fromVipInfo(vip);
        await Get.find<UserPreferencesStorage>().updateVipInfo(vipPrefs);
      } on Exception catch (e) {}
    }
  }
}