Change to disconnect_mailer route

This commit is contained in:
Hillel Coren 2023-04-09 21:10:24 +03:00
parent c54150354a
commit cbf8e446af
6 changed files with 70 additions and 7 deletions

View File

@ -87,6 +87,28 @@ class SettingsRepository {
return userResponse.data;
}
Future<UserEntity> disconnectOAuthMailer(
Credentials credentials,
String password,
String idToken,
String userId,
) async {
dynamic response;
final url = credentials.url +
'/users/$userId/disconnect_mailer?include=company_user';
response = await webClient.post(
url,
credentials.token,
password: password,
);
final UserItemResponse userResponse =
serializers.deserializeWith(UserItemResponse.serializer, response);
return userResponse.data;
}
Future<UserEntity> connectGmailUser(
Credentials credentials,
String password,

View File

@ -135,7 +135,7 @@ Reducer<UserCompanyEntity> userCompanyEntityReducer = combineReducers([
..user.replace(action.user)
..settings.replace(action.user.userCompany.settings)),
),
TypedReducer<UserCompanyEntity, ConnecOAuthUserSuccess>(
TypedReducer<UserCompanyEntity, ConnectOAuthUserSuccess>(
(userCompany, action) =>
userCompany.rebuild((b) => b..user.replace(action.user)),
),

View File

@ -150,9 +150,9 @@ class ConnecOAuthUserRequest implements StartSaving {
final String accessToken;
}
class ConnecOAuthUserSuccess
class ConnectOAuthUserSuccess
implements StopSaving, PersistData, PersistUI, UserVerifiedPassword {
ConnecOAuthUserSuccess(this.user);
ConnectOAuthUserSuccess(this.user);
final UserEntity user;
}

View File

@ -29,6 +29,7 @@ List<Middleware<AppState>> createStoreSettingsMiddleware([
final saveCompany = _saveCompany(repository);
final saveAuthUser = _saveAuthUser(repository);
final connectOAuthUser = _connectOAuthUser(repository);
final disconnectOAuthMailer = _disconnectOAuthMailer(repository);
final connectGmailUser = _connectGmailUser(repository);
final saveSettings = _saveSettings(repository);
final uploadLogo = _uploadLogo(repository);
@ -40,6 +41,8 @@ List<Middleware<AppState>> createStoreSettingsMiddleware([
TypedMiddleware<AppState, SaveCompanyRequest>(saveCompany),
TypedMiddleware<AppState, SaveAuthUserRequest>(saveAuthUser),
TypedMiddleware<AppState, ConnecOAuthUserRequest>(connectOAuthUser),
TypedMiddleware<AppState, DisconnectOAuthMailerRequest>(
disconnectOAuthMailer),
TypedMiddleware<AppState, ConnecGmailUserRequest>(connectGmailUser),
TypedMiddleware<AppState, DisableTwoFactorRequest>(disableTwoFactor),
TypedMiddleware<AppState, SaveUserSettingsRequest>(saveSettings),
@ -146,7 +149,7 @@ Middleware<AppState> _connectOAuthUser(SettingsRepository settingsRepository) {
action.accessToken,
)
.then((user) {
store.dispatch(ConnecOAuthUserSuccess(user));
store.dispatch(ConnectOAuthUserSuccess(user));
if (action.completer != null) {
action.completer.complete();
}
@ -165,6 +168,38 @@ Middleware<AppState> _connectOAuthUser(SettingsRepository settingsRepository) {
};
}
Middleware<AppState> _disconnectOAuthMailer(
SettingsRepository settingsRepository) {
return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) {
final action = dynamicAction as DisconnectOAuthMailerRequest;
settingsRepository
.disconnectOAuthMailer(
store.state.credentials,
action.password,
action.idToken,
action.user.id,
)
.then((user) {
store.dispatch(DisconnectOAuthMailerSuccess(user));
if (action.completer != null) {
action.completer.complete();
}
}).catchError((Object error) {
print(error);
store.dispatch(DisconnectOAuthMailerFailure(error));
if ('$error'.contains('412')) {
store.dispatch(UserUnverifiedPassword());
}
if (action.completer != null) {
action.completer.completeError(error);
}
});
next(action);
};
}
Middleware<AppState> _connectGmailUser(SettingsRepository settingsRepository) {
return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) {
final action = dynamicAction as ConnecGmailUserRequest;

View File

@ -98,7 +98,13 @@ Reducer<SettingsUIState> settingsUIReducer = combineReducers([
..origUser.replace(action.user)
..isChanged = false);
}),
TypedReducer<SettingsUIState, ConnecOAuthUserSuccess>((state, action) {
TypedReducer<SettingsUIState, ConnectOAuthUserSuccess>((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)
..origUser.replace(action.user)

View File

@ -195,7 +195,7 @@ ListUIState _clearListMultiselect(
final usersReducer = combineReducers<UserState>([
TypedReducer<UserState, SaveUserSuccess>(_updateUser),
TypedReducer<UserState, SaveAuthUserSuccess>(_updateAuthUser),
TypedReducer<UserState, ConnecOAuthUserSuccess>(_connectOAuthUser),
TypedReducer<UserState, ConnectOAuthUserSuccess>(_connectOAuthUser),
TypedReducer<UserState, ConnecGmailUserSuccess>(_connectGmailUser),
TypedReducer<UserState, AddUserSuccess>(_addUser),
TypedReducer<UserState, LoadUsersSuccess>(_setLoadedUsers),
@ -252,7 +252,7 @@ UserState _updateAuthUser(UserState userState, SaveAuthUserSuccess action) {
}
UserState _connectOAuthUser(
UserState userState, ConnecOAuthUserSuccess action) {
UserState userState, ConnectOAuthUserSuccess action) {
return userState.rebuild((b) => b..map[action.user.id] = action.user);
}