Skip to content

Commit 52ab5a2

Browse files
committed
refactor: use selector
1 parent 795a52f commit 52ab5a2

4 files changed

Lines changed: 14 additions & 26 deletions

File tree

src/renderer/app.tsx

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,14 @@
11
import "./app.css";
22
import { Header } from "./header";
33
import { Session } from "./session";
4-
import { useSelector } from "./store";
4+
import { sessionSelector, useSelector } from "./store";
55
import { Colors } from "@blueprintjs/core";
66
import React from "react";
77
import { useMedia } from "react-use";
88

99
export const App: React.FC = () => {
1010
const darkMode = useMedia("(prefers-color-scheme: dark)");
11-
12-
const appState = useSelector((s) => s.app);
13-
const sessionState = useSelector((s) => s.session);
14-
15-
const sessionEntries = Object.entries(sessionState);
16-
console.log(appState, sessionState);
11+
const sessionState = useSelector(sessionSelector);
1712

1813
return (
1914
<div
@@ -27,7 +22,7 @@ export const App: React.FC = () => {
2722
>
2823
<Header />
2924
<div style={{ overflowY: "auto" }}>
30-
{sessionEntries.length ? (
25+
{Object.entries(sessionState).length ? (
3126
<Session />
3227
) : (
3328
<div

src/renderer/header.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import defaultImage from "./images/electron.png";
2-
import { useDispatch, useSelector } from "./store";
2+
import { appSelector, useSelector } from "./store";
33
import { noDragStyle } from "./utils";
44
import {
55
Button,
@@ -12,8 +12,7 @@ import { Select } from "@blueprintjs/select";
1212
import { type FC, useState } from "react";
1313

1414
export const Header: FC = () => {
15-
const dispatch = useDispatch();
16-
const appState = useSelector((s) => s.app);
15+
const appState = useSelector(appSelector);
1716
const [input, setInput] = useState("");
1817

1918
return (

src/renderer/session.tsx

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useDispatch, useSelector } from "./store";
1+
import { appSelector, sessionSelector, useSelector } from "./store";
22
import {
33
Tabs,
44
Tab,
@@ -12,9 +12,8 @@ import { useEffect, type FC, useState } from "react";
1212

1313
export const Session: FC = () => {
1414
const [activeId, setActiveId] = useState("");
15-
const dispatch = useDispatch();
16-
// const appState = useSelector((s) => s.app);
17-
const sessionState = useSelector((s) => s.session);
15+
const appState = useSelector(appSelector);
16+
const sessionState = useSelector(sessionSelector);
1817

1918
useEffect(() => {
2019
const sessionIds = Object.keys(sessionState);
@@ -27,21 +26,19 @@ export const Session: FC = () => {
2726

2827
return (
2928
<Tabs
30-
vertical
3129
selectedTabId={activeId}
3230
onChange={(key) => {
3331
setActiveId(key as string);
3432
}}
3533
>
3634
{Object.entries(sessionState).map(([id, session]) => {
37-
// const appInfo = appState.info[session.appId];
35+
const appInfo = appState[session.appId];
3836

3937
return (
4038
<Tab
4139
id={id}
4240
key={id}
43-
// title={`${appInfo?.name} (${appInfo?.id})`}
44-
title="session" // TODO:
41+
title={`${appInfo?.name} (${appInfo?.id})`}
4542
panel={
4643
<div style={{ display: "flex", marginTop: -20 }}>
4744
<div>

src/renderer/store.ts

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
1-
import { reducer, type Action, type State } from "../reducer";
2-
import {
3-
applyMiddleware,
4-
legacy_createStore,
5-
type Dispatch,
6-
} from "@reduxjs/toolkit";
1+
import { reducer, type State } from "../reducer";
2+
import { applyMiddleware, legacy_createStore } from "@reduxjs/toolkit";
73
import { composeWithStateSync } from "electron-redux/renderer";
84
import * as rr from "react-redux";
95

@@ -12,5 +8,6 @@ export const store = legacy_createStore(
128
composeWithStateSync(applyMiddleware()),
139
);
1410

15-
export const useDispatch = rr.useDispatch.withTypes<Dispatch<Action>>();
1611
export const useSelector = rr.useSelector.withTypes<State>();
12+
export const appSelector = (s: State) => s.app;
13+
export const sessionSelector = (s: State) => s.session;

0 commit comments

Comments
 (0)