Change to /disconnect_oauth
This commit is contained in:
parent
51d0914405
commit
b423f9f96c
|
|
@ -87,6 +87,29 @@ class SettingsRepository {
|
|||
return userResponse.data;
|
||||
}
|
||||
|
||||
Future<UserEntity> disconnectOAuthUser(
|
||||
Credentials credentials,
|
||||
UserEntity user,
|
||||
String password,
|
||||
String idToken,
|
||||
) async {
|
||||
dynamic response;
|
||||
|
||||
final url = credentials.url +
|
||||
'/users/${user.id}/disconnect_oauth?include=company_user';
|
||||
response = await webClient.post(
|
||||
url,
|
||||
credentials.token,
|
||||
password: password,
|
||||
idToken: idToken,
|
||||
);
|
||||
|
||||
final UserItemResponse userResponse =
|
||||
serializers.deserializeWith(UserItemResponse.serializer, response);
|
||||
|
||||
return userResponse.data;
|
||||
}
|
||||
|
||||
Future<UserEntity> disconnectOAuthMailer(
|
||||
Credentials credentials,
|
||||
String password,
|
||||
|
|
|
|||
|
|
@ -163,6 +163,33 @@ class ConnecOAuthUserFailure implements StopSaving {
|
|||
final Object error;
|
||||
}
|
||||
|
||||
class DisconnecOAuthUserRequest implements StartSaving {
|
||||
DisconnecOAuthUserRequest({
|
||||
@required this.user,
|
||||
@required this.idToken,
|
||||
@required this.completer,
|
||||
@required this.password,
|
||||
});
|
||||
|
||||
final UserEntity user;
|
||||
final Completer completer;
|
||||
final String password;
|
||||
final String idToken;
|
||||
}
|
||||
|
||||
class DisconnectOAuthUserSuccess
|
||||
implements StopSaving, PersistData, PersistUI, UserVerifiedPassword {
|
||||
DisconnectOAuthUserSuccess(this.user);
|
||||
|
||||
final UserEntity user;
|
||||
}
|
||||
|
||||
class DisconnecOAuthUserFailure implements StopSaving {
|
||||
DisconnecOAuthUserFailure(this.error);
|
||||
|
||||
final Object error;
|
||||
}
|
||||
|
||||
class DisconnectOAuthMailerRequest implements StartSaving {
|
||||
DisconnectOAuthMailerRequest({
|
||||
@required this.completer,
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ List<Middleware<AppState>> createStoreSettingsMiddleware([
|
|||
final saveCompany = _saveCompany(repository);
|
||||
final saveAuthUser = _saveAuthUser(repository);
|
||||
final connectOAuthUser = _connectOAuthUser(repository);
|
||||
final disconnectOAuthUser = _disconnectOAuthUser(repository);
|
||||
final disconnectOAuthMailer = _disconnectOAuthMailer(repository);
|
||||
final connectGmailUser = _connectGmailUser(repository);
|
||||
final saveSettings = _saveSettings(repository);
|
||||
|
|
@ -41,6 +42,7 @@ List<Middleware<AppState>> createStoreSettingsMiddleware([
|
|||
TypedMiddleware<AppState, SaveCompanyRequest>(saveCompany),
|
||||
TypedMiddleware<AppState, SaveAuthUserRequest>(saveAuthUser),
|
||||
TypedMiddleware<AppState, ConnecOAuthUserRequest>(connectOAuthUser),
|
||||
TypedMiddleware<AppState, DisconnecOAuthUserRequest>(disconnectOAuthUser),
|
||||
TypedMiddleware<AppState, DisconnectOAuthMailerRequest>(
|
||||
disconnectOAuthMailer),
|
||||
TypedMiddleware<AppState, ConnecGmailUserRequest>(connectGmailUser),
|
||||
|
|
@ -168,6 +170,38 @@ Middleware<AppState> _connectOAuthUser(SettingsRepository settingsRepository) {
|
|||
};
|
||||
}
|
||||
|
||||
Middleware<AppState> _disconnectOAuthUser(
|
||||
SettingsRepository settingsRepository) {
|
||||
return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) {
|
||||
final action = dynamicAction as DisconnecOAuthUserRequest;
|
||||
|
||||
settingsRepository
|
||||
.disconnectOAuthUser(
|
||||
store.state.credentials,
|
||||
action.user,
|
||||
action.password,
|
||||
action.idToken,
|
||||
)
|
||||
.then((user) {
|
||||
store.dispatch(DisconnectOAuthUserSuccess(user));
|
||||
if (action.completer != null) {
|
||||
action.completer.complete();
|
||||
}
|
||||
}).catchError((Object error) {
|
||||
print(error);
|
||||
store.dispatch(DisconnecOAuthUserFailure(error));
|
||||
if ('$error'.contains('412')) {
|
||||
store.dispatch(UserUnverifiedPassword());
|
||||
}
|
||||
if (action.completer != null) {
|
||||
action.completer.completeError(error);
|
||||
}
|
||||
});
|
||||
|
||||
next(action);
|
||||
};
|
||||
}
|
||||
|
||||
Middleware<AppState> _disconnectOAuthMailer(
|
||||
SettingsRepository settingsRepository) {
|
||||
return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) {
|
||||
|
|
|
|||
|
|
@ -104,6 +104,12 @@ Reducer<SettingsUIState> settingsUIReducer = combineReducers([
|
|||
..origUser.replace(action.user)
|
||||
..isChanged = false);
|
||||
}),
|
||||
TypedReducer<SettingsUIState, DisconnectOAuthUserSuccess>((state, action) {
|
||||
return state.rebuild((b) => b
|
||||
..user.replace(action.user)
|
||||
..origUser.replace(action.user)
|
||||
..isChanged = false);
|
||||
}),
|
||||
TypedReducer<SettingsUIState, DisconnectOAuthMailerSuccess>((state, action) {
|
||||
return state.rebuild((b) => b
|
||||
..user.replace(action.user)
|
||||
|
|
|
|||
|
|
@ -196,6 +196,7 @@ final usersReducer = combineReducers<UserState>([
|
|||
TypedReducer<UserState, SaveUserSuccess>(_updateUser),
|
||||
TypedReducer<UserState, SaveAuthUserSuccess>(_updateAuthUser),
|
||||
TypedReducer<UserState, ConnectOAuthUserSuccess>(_connectOAuthUser),
|
||||
TypedReducer<UserState, DisconnectOAuthUserSuccess>(_disconnectOAuthUser),
|
||||
TypedReducer<UserState, ConnecGmailUserSuccess>(_connectGmailUser),
|
||||
TypedReducer<UserState, DisconnectOAuthMailerSuccess>(_disconnectOAuthMailer),
|
||||
TypedReducer<UserState, AddUserSuccess>(_addUser),
|
||||
|
|
@ -257,6 +258,11 @@ UserState _connectOAuthUser(
|
|||
return userState.rebuild((b) => b..map[action.user.id] = action.user);
|
||||
}
|
||||
|
||||
UserState _disconnectOAuthUser(
|
||||
UserState userState, DisconnectOAuthUserSuccess action) {
|
||||
return userState.rebuild((b) => b..map[action.user.id] = action.user);
|
||||
}
|
||||
|
||||
UserState _disconnectOAuthMailer(
|
||||
UserState userState, DisconnectOAuthMailerSuccess action) {
|
||||
return userState.rebuild((b) => b..map[action.user.id] = action.user);
|
||||
|
|
|
|||
|
|
@ -180,8 +180,8 @@ class UserDetailsVM {
|
|||
GoogleOAuth.disconnect();
|
||||
});
|
||||
store.dispatch(
|
||||
SaveAuthUserRequest(
|
||||
user: state.user.rebuild((b) => b..oauthProvider = ''),
|
||||
DisconnecOAuthUserRequest(
|
||||
user: state.user,
|
||||
password: password,
|
||||
idToken: idToken,
|
||||
completer: completer,
|
||||
|
|
@ -244,8 +244,8 @@ class UserDetailsVM {
|
|||
final completer = snackBarCompleter<Null>(context,
|
||||
AppLocalization.of(context).disconnectedMicrosoft);
|
||||
store.dispatch(
|
||||
SaveAuthUserRequest(
|
||||
user: state.user.rebuild((b) => b..oauthProvider = ''),
|
||||
DisconnecOAuthUserRequest(
|
||||
user: state.user,
|
||||
password: password,
|
||||
idToken: idToken,
|
||||
completer: completer,
|
||||
|
|
@ -271,8 +271,8 @@ class UserDetailsVM {
|
|||
final completer = snackBarCompleter<Null>(
|
||||
context, AppLocalization.of(context).disconnectedApple);
|
||||
store.dispatch(
|
||||
SaveAuthUserRequest(
|
||||
user: state.user.rebuild((b) => b..oauthProvider = ''),
|
||||
DisconnecOAuthUserRequest(
|
||||
user: state.user,
|
||||
password: password,
|
||||
idToken: idToken,
|
||||
completer: completer,
|
||||
|
|
|
|||
Loading…
Reference in New Issue