loginWithApple method

Future<void> loginWithApple()

Implementation

Future<void> loginWithApple() async {
  try {
    AppleAuthProvider appleProvider = AppleAuthProvider();
    appleProvider.addScope('email');
    appleProvider.addScope('name');
    final userCredentials = await FirebaseAuth.instance.signInWithProvider(
      appleProvider,
    );

    if (userCredentials.user != null) {
      if (kDebugMode) {
        print(
          "apple accessToken: ${userCredentials..credential?.accessToken}",
        );
      }
      final response = await _dioApiService.post(
        endpoint: '${CommunityConstants.socialAuth}/apple',
        body: {
          "access_token": (await userCredentials.user!.getIdToken())!,
          "project": 'quitmate',
        },
        headers: {'api-key': CommunityConstants.apiKey},
      );
      if (response.statusCode == 200) {
        await Hive.box('user_data').put('user_token', response.data['token']);
        user.value = userCredentials.user;
        if (user.value != null) {
          isSignedIn.value = true;
          _onLogin();
        }
      }
    }
  } catch (e) {
    debugPrint('Apple Login Failed:  $e');
  }
}