feat: guest mode

This commit is contained in:
Tristan Yang
2022-08-30 23:20:00 +08:00
parent ac3289b255
commit 5ffd9748fd
11 changed files with 179 additions and 44 deletions
+24 -15
View File
@@ -1,5 +1,5 @@
import { useState } from "react";
import { useDispatch, batch } from "react-redux";
import { useDispatch } from "react-redux";
import { fillReactionMessage } from "../slices/message.reaction";
import { fillServer } from "../slices/server";
import { fillMessage } from "../slices/message";
@@ -10,11 +10,22 @@ import { fillUsers } from "../slices/users";
import { fillFootprint } from "../slices/footprint";
import { fillFileMessage } from "../slices/message.file";
import { fillUI } from "../slices/ui";
import { useAppSelector } from "../store";
const useRehydrate = () => {
const [iterated, setIterated] = useState(false);
const dispatch = useDispatch();
const { isGuest } = useAppSelector((store) => {
return {
isGuest: store.authData.user?.create_by == "guest"
};
});
const rehydrate = async () => {
// 如果是游客,直接忽略
if (isGuest) {
setIterated(true);
return;
}
const rehydrateData = {
channels: [],
users: [],
@@ -74,20 +85,18 @@ const useRehydrate = () => {
});
})
);
batch(() => {
dispatch(fillUsers(rehydrateData.users));
dispatch(fillServer(rehydrateData.server));
console.log("fill channels from indexedDB");
dispatch(fillChannels(rehydrateData.channels));
// file message
dispatch(fillFileMessage(rehydrateData.fileMessage.list));
dispatch(fillChannelMsg(rehydrateData.channelMessage));
dispatch(fillUserMsg(rehydrateData.userMessage));
dispatch(fillMessage(rehydrateData.message));
dispatch(fillFootprint(rehydrateData.footprint));
dispatch(fillUI(rehydrateData.ui));
dispatch(fillReactionMessage(rehydrateData.reactionMessage));
});
dispatch(fillUsers(rehydrateData.users));
dispatch(fillServer(rehydrateData.server));
console.log("fill channels from indexedDB");
dispatch(fillChannels(rehydrateData.channels));
// file message
dispatch(fillFileMessage(rehydrateData.fileMessage.list));
dispatch(fillChannelMsg(rehydrateData.channelMessage));
dispatch(fillUserMsg(rehydrateData.userMessage));
dispatch(fillMessage(rehydrateData.message));
dispatch(fillFootprint(rehydrateData.footprint));
dispatch(fillUI(rehydrateData.ui));
dispatch(fillReactionMessage(rehydrateData.reactionMessage));
setIterated(true);
console.log("iterate results", rehydrateData, results);