Change to /disconnect_oauth
This commit is contained in:
parent
51d0914405
commit
b423f9f96c
|
|
@ -87,6 +87,29 @@ class SettingsRepository {
|
||||||
return userResponse.data;
|
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(
|
Future<UserEntity> disconnectOAuthMailer(
|
||||||
Credentials credentials,
|
Credentials credentials,
|
||||||
String password,
|
String password,
|
||||||
|
|
|
||||||
|
|
@ -163,6 +163,33 @@ class ConnecOAuthUserFailure implements StopSaving {
|
||||||
final Object error;
|
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 {
|
class DisconnectOAuthMailerRequest implements StartSaving {
|
||||||
DisconnectOAuthMailerRequest({
|
DisconnectOAuthMailerRequest({
|
||||||
@required this.completer,
|
@required this.completer,
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,7 @@ List<Middleware<AppState>> createStoreSettingsMiddleware([
|
||||||
final saveCompany = _saveCompany(repository);
|
final saveCompany = _saveCompany(repository);
|
||||||
final saveAuthUser = _saveAuthUser(repository);
|
final saveAuthUser = _saveAuthUser(repository);
|
||||||
final connectOAuthUser = _connectOAuthUser(repository);
|
final connectOAuthUser = _connectOAuthUser(repository);
|
||||||
|
final disconnectOAuthUser = _disconnectOAuthUser(repository);
|
||||||
final disconnectOAuthMailer = _disconnectOAuthMailer(repository);
|
final disconnectOAuthMailer = _disconnectOAuthMailer(repository);
|
||||||
final connectGmailUser = _connectGmailUser(repository);
|
final connectGmailUser = _connectGmailUser(repository);
|
||||||
final saveSettings = _saveSettings(repository);
|
final saveSettings = _saveSettings(repository);
|
||||||
|
|
@ -41,6 +42,7 @@ List<Middleware<AppState>> createStoreSettingsMiddleware([
|
||||||
TypedMiddleware<AppState, SaveCompanyRequest>(saveCompany),
|
TypedMiddleware<AppState, SaveCompanyRequest>(saveCompany),
|
||||||
TypedMiddleware<AppState, SaveAuthUserRequest>(saveAuthUser),
|
TypedMiddleware<AppState, SaveAuthUserRequest>(saveAuthUser),
|
||||||
TypedMiddleware<AppState, ConnecOAuthUserRequest>(connectOAuthUser),
|
TypedMiddleware<AppState, ConnecOAuthUserRequest>(connectOAuthUser),
|
||||||
|
TypedMiddleware<AppState, DisconnecOAuthUserRequest>(disconnectOAuthUser),
|
||||||
TypedMiddleware<AppState, DisconnectOAuthMailerRequest>(
|
TypedMiddleware<AppState, DisconnectOAuthMailerRequest>(
|
||||||
disconnectOAuthMailer),
|
disconnectOAuthMailer),
|
||||||
TypedMiddleware<AppState, ConnecGmailUserRequest>(connectGmailUser),
|
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(
|
Middleware<AppState> _disconnectOAuthMailer(
|
||||||
SettingsRepository settingsRepository) {
|
SettingsRepository settingsRepository) {
|
||||||
return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) {
|
return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) {
|
||||||
|
|
|
||||||
|
|
@ -104,6 +104,12 @@ Reducer<SettingsUIState> settingsUIReducer = combineReducers([
|
||||||
..origUser.replace(action.user)
|
..origUser.replace(action.user)
|
||||||
..isChanged = false);
|
..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) {
|
TypedReducer<SettingsUIState, DisconnectOAuthMailerSuccess>((state, action) {
|
||||||
return state.rebuild((b) => b
|
return state.rebuild((b) => b
|
||||||
..user.replace(action.user)
|
..user.replace(action.user)
|
||||||
|
|
|
||||||
|
|
@ -196,6 +196,7 @@ final usersReducer = combineReducers<UserState>([
|
||||||
TypedReducer<UserState, SaveUserSuccess>(_updateUser),
|
TypedReducer<UserState, SaveUserSuccess>(_updateUser),
|
||||||
TypedReducer<UserState, SaveAuthUserSuccess>(_updateAuthUser),
|
TypedReducer<UserState, SaveAuthUserSuccess>(_updateAuthUser),
|
||||||
TypedReducer<UserState, ConnectOAuthUserSuccess>(_connectOAuthUser),
|
TypedReducer<UserState, ConnectOAuthUserSuccess>(_connectOAuthUser),
|
||||||
|
TypedReducer<UserState, DisconnectOAuthUserSuccess>(_disconnectOAuthUser),
|
||||||
TypedReducer<UserState, ConnecGmailUserSuccess>(_connectGmailUser),
|
TypedReducer<UserState, ConnecGmailUserSuccess>(_connectGmailUser),
|
||||||
TypedReducer<UserState, DisconnectOAuthMailerSuccess>(_disconnectOAuthMailer),
|
TypedReducer<UserState, DisconnectOAuthMailerSuccess>(_disconnectOAuthMailer),
|
||||||
TypedReducer<UserState, AddUserSuccess>(_addUser),
|
TypedReducer<UserState, AddUserSuccess>(_addUser),
|
||||||
|
|
@ -257,6 +258,11 @@ UserState _connectOAuthUser(
|
||||||
return userState.rebuild((b) => b..map[action.user.id] = action.user);
|
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 _disconnectOAuthMailer(
|
||||||
UserState userState, DisconnectOAuthMailerSuccess action) {
|
UserState userState, DisconnectOAuthMailerSuccess action) {
|
||||||
return userState.rebuild((b) => b..map[action.user.id] = action.user);
|
return userState.rebuild((b) => b..map[action.user.id] = action.user);
|
||||||
|
|
|
||||||
|
|
@ -180,8 +180,8 @@ class UserDetailsVM {
|
||||||
GoogleOAuth.disconnect();
|
GoogleOAuth.disconnect();
|
||||||
});
|
});
|
||||||
store.dispatch(
|
store.dispatch(
|
||||||
SaveAuthUserRequest(
|
DisconnecOAuthUserRequest(
|
||||||
user: state.user.rebuild((b) => b..oauthProvider = ''),
|
user: state.user,
|
||||||
password: password,
|
password: password,
|
||||||
idToken: idToken,
|
idToken: idToken,
|
||||||
completer: completer,
|
completer: completer,
|
||||||
|
|
@ -244,8 +244,8 @@ class UserDetailsVM {
|
||||||
final completer = snackBarCompleter<Null>(context,
|
final completer = snackBarCompleter<Null>(context,
|
||||||
AppLocalization.of(context).disconnectedMicrosoft);
|
AppLocalization.of(context).disconnectedMicrosoft);
|
||||||
store.dispatch(
|
store.dispatch(
|
||||||
SaveAuthUserRequest(
|
DisconnecOAuthUserRequest(
|
||||||
user: state.user.rebuild((b) => b..oauthProvider = ''),
|
user: state.user,
|
||||||
password: password,
|
password: password,
|
||||||
idToken: idToken,
|
idToken: idToken,
|
||||||
completer: completer,
|
completer: completer,
|
||||||
|
|
@ -271,8 +271,8 @@ class UserDetailsVM {
|
||||||
final completer = snackBarCompleter<Null>(
|
final completer = snackBarCompleter<Null>(
|
||||||
context, AppLocalization.of(context).disconnectedApple);
|
context, AppLocalization.of(context).disconnectedApple);
|
||||||
store.dispatch(
|
store.dispatch(
|
||||||
SaveAuthUserRequest(
|
DisconnecOAuthUserRequest(
|
||||||
user: state.user.rebuild((b) => b..oauthProvider = ''),
|
user: state.user,
|
||||||
password: password,
|
password: password,
|
||||||
idToken: idToken,
|
idToken: idToken,
|
||||||
completer: completer,
|
completer: completer,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue