Save room shared keys to local storage
Signed-off-by: Šimon Brandner <simon.bra.ag@gmail.com>
This commit is contained in:
@@ -14,7 +14,27 @@ See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
import { useSetting } from "../settings/useSetting";
|
||||
import { useEffect, useMemo } from "react";
|
||||
import { randomString } from "matrix-js-sdk/src/randomstring";
|
||||
|
||||
export const useRoomSharedKey = (roomId: string, initialValue?: string) =>
|
||||
useSetting(`room-shared-key-${roomId}`, initialValue);
|
||||
import { useEnableE2EE } from "../settings/useSetting";
|
||||
import { useLocalStorage } from "../useLocalStorage";
|
||||
|
||||
const getRoomSharedKeyLocalStorageKey = (roomId: string): string =>
|
||||
`room-shared-key-${roomId}`;
|
||||
|
||||
export const useRoomSharedKey = (
|
||||
roomId: string
|
||||
): [string | null, ((value: string) => void) | null] => {
|
||||
const key = useMemo(() => getRoomSharedKeyLocalStorageKey(roomId), [roomId]);
|
||||
const [e2eeEnabled] = useEnableE2EE();
|
||||
const [roomSharedKey, setRoomSharedKey] = useLocalStorage(key);
|
||||
|
||||
useEffect(() => {
|
||||
if ((roomSharedKey && roomSharedKey !== "") || !e2eeEnabled) return;
|
||||
|
||||
setRoomSharedKey(randomString(32));
|
||||
}, [roomSharedKey, e2eeEnabled, setRoomSharedKey]);
|
||||
|
||||
return e2eeEnabled ? [roomSharedKey, setRoomSharedKey] : [null, null];
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user