refactor: favorite error tip

This commit is contained in:
zerosoul
2022-05-07 09:55:18 +08:00
parent 60fab189ad
commit 1902c2f891
9 changed files with 348 additions and 259 deletions
+9 -5
View File
@@ -69,9 +69,9 @@ export default function Commands({
from_uid = 0,
toggleEditMessage,
}) {
const { addFavorite, isFavorited } = useFavMessage(
context == "channel" ? contextId : null
);
const { addFavorite, isFavorited } = useFavMessage({
cid: context == "channel" ? contextId : null,
});
const [mids, setMids] = useState([]);
const dispatch = useDispatch();
const [pinModalVisible, setPinModalVisible] = useState(false);
@@ -122,8 +122,12 @@ export default function Commands({
toast.success("Favorited!");
return;
}
await addFavorite(mid);
toast.success("Added Favorites!");
const added = await addFavorite(mid);
if (added) {
toast.success("Added Favorites!");
} else {
toast.error("Added Favorites Failed!");
}
};
useEffect(() => {
if (isUnpinSuccess) {
+1 -1
View File
@@ -14,7 +14,7 @@ const StyledSaved = styled.div`
padding: 8px;
`;
const SavedMessage = ({ cid, id }) => {
const { favorites } = useFavMessage(cid);
const { favorites } = useFavMessage({ cid });
const [fav, setFav] = useState(null);
const [messages, setMessages] = useState(null);
useEffect(() => {
+14 -8
View File
@@ -4,21 +4,20 @@ import {
useLazyRemoveFavoriteQuery,
useFavoriteMessageMutation,
} from "../../app/services/message";
export default function useFavMessage(cid = null) {
export default function useFavMessage({ cid = null, uid = null }) {
const [removeFav] = useLazyRemoveFavoriteQuery();
const [addFav] = useFavoriteMessageMutation();
const [favorites, setFavorites] = useState([]);
const { favs = [] } = useSelector((store) => {
return {
// mids: store.channelMessage.byId[cid],
favs: store.favorites,
// loginUser: store.contacts.byId[store.authData.uid],
};
});
const addFavorite = async (mid = []) => {
const mids = Array.isArray(mid) ? mid.map((i) => +i) : [+mid];
if (mids.length == 0) return;
await addFav(mids);
const { error = null } = await addFav(mids);
return !error;
};
const removeFavorite = (id) => {
if (!id) return;
@@ -36,16 +35,23 @@ export default function useFavMessage(cid = null) {
return mids.findIndex((i) => i == mid) > -1;
};
useEffect(() => {
const filtereds = cid
let filtereds = [];
filtereds = cid
? favs.filter((f) => {
if (!f.messages) return false;
return f.messages.every((m) => m.source.gid == cid);
})
: favs;
console.log("filtered", filtereds);
setFavorites(filtereds);
}, [cid, favs]);
filtereds = uid
? filtereds.filter((f) => {
if (!f.messages) return false;
return f.messages.every((m) => m.source.uid == uid);
})
: filtereds;
setFavorites(filtereds);
}, [cid, uid, favs]);
console.log("filtered", cid, uid, favs);
return {
isFavorited,
addFavorite,