feat: enable force select profile

This commit is contained in:
GyDi
2022-01-17 02:28:23 +08:00
parent 99a8e25411
commit 5eddf4f1aa
2 changed files with 21 additions and 17 deletions

View File

@@ -80,20 +80,18 @@ const ProfilePage = () => {
};
const lockRef = useRef(false);
const onProfileChange = (index: number) => {
if (index === profiles.current || lockRef.current) return;
const onSelect = async (index: number, force: boolean) => {
if (lockRef.current) return;
if (!force && index === profiles.current) return;
lockRef.current = true;
selectProfile(index)
.then(() => {
mutate("getProfiles", { ...profiles, current: index }, true);
})
.catch((err) => {
console.error(err);
})
.finally(() => {
lockRef.current = false;
});
try {
await selectProfile(index);
mutate("getProfiles", { ...profiles, current: index }, true);
} catch (err: any) {
err && Notice.error(err.toString());
} finally {
lockRef.current = false;
}
};
return (
@@ -125,7 +123,7 @@ const ProfilePage = () => {
index={idx}
selected={profiles.current === idx}
itemData={item}
onClick={() => onProfileChange(idx)}
onSelect={(f) => onSelect(idx, f)}
/>
</Grid>
))}