{shouldRenderPasswordLock ? (
             this.renderPasswordLock()
@@ -512,7 +505,7 @@ class SettingsViewInner extends React.Component
 {
           buttonColor: SessionButtonColor.Primary,
         },
         onClick: () => {
-          this.displayPasswordModal(PasswordAction.Set);
+          this.displayPasswordModal('set');
         },
         confirmationDialogParams: undefined,
       },
@@ -530,7 +523,7 @@ class SettingsViewInner extends React.Component {
           buttonColor: SessionButtonColor.Primary,
         },
         onClick: () => {
-          this.displayPasswordModal(PasswordAction.Change);
+          this.displayPasswordModal('change');
         },
         confirmationDialogParams: undefined,
       },
@@ -548,7 +541,7 @@ class SettingsViewInner extends React.Component {
           buttonColor: SessionButtonColor.Danger,
         },
         onClick: () => {
-          this.displayPasswordModal(PasswordAction.Remove);
+          this.displayPasswordModal('remove');
         },
         confirmationDialogParams: undefined,
       },
@@ -556,25 +549,14 @@ class SettingsViewInner extends React.Component {
   }
 
   private displayPasswordModal(passwordAction: PasswordAction) {
-    this.setState({
-      ...this.state,
-      modal: (
-         {
-            this.clearModal();
-          }}
-          onOk={this.onPasswordUpdated}
-          action={passwordAction}
-        />
-      ),
-    });
-  }
-
-  private clearModal(): void {
-    this.setState({
-      ...this.state,
-      modal: null,
-    });
+    window.inboxStore?.dispatch(
+      sessionPassword({
+        passwordAction,
+        onOk: () => {
+          this.onPasswordUpdated(passwordAction);
+        },
+      })
+    );
   }
 
   private getBlockedUserSettings(): Array {
diff --git a/ts/state/ducks/modalDialog.tsx b/ts/state/ducks/modalDialog.tsx
index 9fba3bfa8..91ce81173 100644
--- a/ts/state/ducks/modalDialog.tsx
+++ b/ts/state/ducks/modalDialog.tsx
@@ -1,5 +1,6 @@
 import { createSlice, PayloadAction } from '@reduxjs/toolkit';
 import { SessionConfirmDialogProps } from '../../components/session/SessionConfirm';
+import { PasswordAction } from '../../components/session/SessionPasswordModal';
 
 export type ConfirmModalState = SessionConfirmDialogProps | null;
 export type InviteContactModalState = { conversationId: string } | null;
@@ -13,6 +14,8 @@ export type EditProfileModalState = {} | null;
 export type OnionPathModalState = EditProfileModalState;
 export type RecoveryPhraseModalState = EditProfileModalState;
 
+export type SessionPasswordModalState = { passwordAction: PasswordAction; onOk: () => void } | null;
+
 export type UserDetailsModalState = {
   conversationId: string;
   authorAvatarPath?: string;
@@ -32,6 +35,7 @@ export type ModalState = {
   onionPathModal: OnionPathModalState;
   recoveryPhraseModal: RecoveryPhraseModalState;
   adminLeaveClosedGroup: AdminLeaveClosedGroupModalState;
+  sessionPasswordModal: SessionPasswordModalState;
 };
 
 export const initialModalState: ModalState = {
@@ -47,6 +51,7 @@ export const initialModalState: ModalState = {
   onionPathModal: null,
   recoveryPhraseModal: null,
   adminLeaveClosedGroup: null,
+  sessionPasswordModal: null,
 };
 
 const ModalSlice = createSlice({
@@ -89,6 +94,9 @@ const ModalSlice = createSlice({
     adminLeaveClosedGroup(state, action: PayloadAction) {
       return { ...state, adminLeaveClosedGroup: action.payload };
     },
+    sessionPassword(state, action: PayloadAction) {
+      return { ...state, sessionPasswordModal: action.payload };
+    },
   },
 });
 
@@ -106,5 +114,6 @@ export const {
   onionPathModal,
   recoveryPhraseModal,
   adminLeaveClosedGroup,
+  sessionPassword,
 } = actions;
 export const modalReducer = reducer;
diff --git a/ts/state/selectors/modal.ts b/ts/state/selectors/modal.ts
index 769b18e23..ec3f765a8 100644
--- a/ts/state/selectors/modal.ts
+++ b/ts/state/selectors/modal.ts
@@ -12,6 +12,7 @@ import {
   OnionPathModalState,
   RecoveryPhraseModalState,
   RemoveModeratorsModalState,
+  SessionPasswordModalState,
   UpdateGroupMembersModalState,
   UpdateGroupNameModalState,
   UserDetailsModalState,
@@ -80,3 +81,8 @@ export const getAdminLeaveClosedGroupDialog = createSelector(
   getModal,
   (state: ModalState): AdminLeaveClosedGroupModalState => state.adminLeaveClosedGroup
 );
+
+export const getSessionPasswordDialog = createSelector(
+  getModal,
+  (state: ModalState): SessionPasswordModalState => state.sessionPasswordModal
+);