Skip to content

Commit 45bef06

Browse files
committed
fix hooks
1 parent 0f3ad46 commit 45bef06

File tree

4 files changed

+257
-23
lines changed

4 files changed

+257
-23
lines changed

package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
"dependencies": {
1111
"@logseq/libs": "^0.0.1-alpha.10",
1212
"react": "^17.0.0",
13-
"react-dom": "^17.0.0"
13+
"react-dom": "^17.0.0",
14+
"react-use": "^17.2.4"
1415
},
1516
"devDependencies": {
1617
"@types/react": "^17.0.0",

src/App.tsx

+5-19
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,21 @@
1-
import React, { useRef, useState } from "react";
2-
3-
const useAppVisible = () => {
4-
const [visible, setVisible] = useState(logseq.isMainUIVisible);
5-
React.useEffect(() => {
6-
const eventName = "ui:visible:changed";
7-
const handler = async ({ visible }: any) => {
8-
setVisible(visible);
9-
};
10-
logseq.on(eventName, handler);
11-
return () => {
12-
logseq.off(eventName, handler);
13-
};
14-
}, []);
15-
return visible;
16-
};
1+
import React, { useRef } from "react";
2+
import { useAppVisible } from "./utils";
173

184
function App() {
195
const innerRef = useRef<HTMLDivElement>(null);
206
const visible = useAppVisible();
217
if (visible) {
228
return (
23-
<main
24-
className="backdrop-filter backdrop-blur-md top-0 bottom-0 left-0 right-0 fixed flex items-center justify-center"
9+
<main
10+
className="backdrop-filter backdrop-blur-md fixed inset-0 flex items-center justify-center"
2511
onClick={(e) => {
2612
if (!innerRef.current?.contains(e.target as any)) {
2713
window.logseq.hideMainUI();
2814
}
2915
}}
3016
>
3117
<div ref={innerRef} className="text-size-2em">
32-
Welcome to Logseq Plugins!
18+
Welcome to [[Logseq]] Plugins!
3319
</div>
3420
</main>
3521
);

src/utils.ts

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import React, { useState } from "react";
2+
import { useMountedState } from "react-use";
3+
4+
export const useAppVisible = () => {
5+
const [visible, setVisible] = useState(logseq.isMainUIVisible);
6+
const isMounted = useMountedState();
7+
React.useEffect(() => {
8+
const eventName = "ui:visible:changed";
9+
const handler = async ({ visible }: any) => {
10+
if (isMounted()) {
11+
setVisible(visible);
12+
}
13+
};
14+
logseq.on(eventName, handler);
15+
return () => {
16+
logseq.off(eventName, handler);
17+
};
18+
}, []);
19+
return visible;
20+
};
21+
22+
export const useSidebarVisible = () => {
23+
const [visible, setVisible] = useState(false);
24+
const isMounted = useMountedState();
25+
React.useEffect(() => {
26+
logseq.App.onSidebarVisibleChanged(({ visible }) => {
27+
if (isMounted()) {
28+
setVisible(visible);
29+
}
30+
});
31+
}, []);
32+
return visible;
33+
};

0 commit comments

Comments
 (0)