Skip to content

Instantly share code, notes, and snippets.

@locskot
Created March 8, 2022 11:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save locskot/a73ab7bca5819795537f40ab71f61bfb to your computer and use it in GitHub Desktop.
Save locskot/a73ab7bca5819795537f40ab71f61bfb to your computer and use it in GitHub Desktop.
import 'package:driver3/di/locator.dart';
import 'package:driver3/extensions/string_ext.dart';
import 'package:driver3/interactors/abs_interactor.dart';
import 'package:driver3/models/common_response.dart';
import 'package:driver3/network/iway_api.dart';
import 'package:driver3/utils/constants.dart';
import 'package:driver3/utils/manager/device_manager.dart';
import 'package:shared_preferences/shared_preferences.dart';
abstract class LoginInteractor extends AbsInteractor {
LoginInteractor();
factory LoginInteractor.api() => LoginInteractorApi();
Future<CommonResult> resetPassword({String? login});
Future<CommonResult> auth({Map<String, dynamic>? map});
Future<CommonResult> fetchDriver();
Future<CommonResult> postFcmToken({required String fcmToken});
}
class LoginInteractorApi extends LoginInteractor {
final iwayApi = locator<IwayApi>();
final sharedPreferences = locator<SharedPreferences>();
@override
Future<CommonResult> resetPassword({String? login}) async {
final future = iwayApi.resetPassword({'login': login});
final result = await super.send(future: future, requestUrl: RequestUrl.ResetPassword);
return result;
}
@override
Future<CommonResult> auth({Map<String, dynamic>? map}) async {
final future = iwayApi.authorize(map);
final result = await super.send(future: future, requestUrl: RequestUrl.Auth);
return result;
}
@override
Future<CommonResult> fetchDriver() async {
final future = iwayApi.fetchDriver();
final result = await super.send(future: future, requestUrl: RequestUrl.Driver);
return result;
}
@override
Future<CommonResult> postFcmToken({required String fcmToken}) async {
final di = await getDeviceInfo();
await sharedPreferences.setString(PUSH_TOKEN, fcmToken);
final pushMapRequest = {
'os': di.os,
'app_version': di.packageInfo.version,
'hardware_id': di.hardwareId,
'push_token': fcmToken,
'lang': currentLocale,
};
final future = iwayApi.postFcmToken(pushMapRequest);
final result = await super.send(future: future, requestUrl: RequestUrl.FcmToken);
return result;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment