Skip to content
This repository was archived by the owner on Oct 18, 2023. It is now read-only.

Commit 0899ae8

Browse files
committed
chore: home page update
1 parent 63b23b3 commit 0899ae8

File tree

5 files changed

+149
-9
lines changed

5 files changed

+149
-9
lines changed

main/background.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { autoUpdater, UpdateInfo } from "@imjs/electron-differential-updater"
66
import ipcEvents from './helpers/ipcEvents';
77
import tray from './helpers/tray';
88
import util, { isProd } from './util';
9+
import apiEvents from './helpers/apiEvents';
910

1011
// AUTO UPDATER
1112
autoUpdater.logger = electronLogger
@@ -117,6 +118,7 @@ if (isProd) {
117118

118119
await tray.init()
119120
ipcEvents.init()
121+
apiEvents.init()
120122

121123

122124
})();

main/helpers/apiEvents.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import { ipcMain } from "electron"
2+
import { RequestInfo, RequestInit } from "node-fetch";
3+
import 'dotenv/config'
4+
5+
const fetch = (url: RequestInfo, init?: RequestInit) => import("node-fetch").then(({ default: fetch }) => fetch(url, init));
6+
7+
const CHANGELOG_URL = "https://api.github.com/repos/BytesToBits/LockPass/commits"
8+
const RELEASE_URL = "https://api.github.com/repos/BytesToBits/LockPass/releases"
9+
10+
const init = () => {
11+
ipcMain.handle('get-changelog', async(_) => {
12+
const res = await fetch(CHANGELOG_URL, {
13+
headers: {
14+
Authorization: `Basic ${Buffer.from(`${process.env.NAME}:${process.env.TOKEN}`).toString("base64")}`
15+
}
16+
})
17+
18+
return await res.json()
19+
})
20+
21+
ipcMain.handle('get-releases', async(_) => {
22+
const res = await fetch(RELEASE_URL, {
23+
headers: {
24+
Authorization: `Basic ${Buffer.from(`${process.env.NAME}:${process.env.TOKEN}`).toString("base64")}`
25+
}
26+
})
27+
28+
return await res.json()
29+
})
30+
}
31+
32+
export default {
33+
init
34+
}

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,14 @@
2020
"@emotion/react": "^11.9.3",
2121
"@emotion/styled": "^11.9.3",
2222
"@imjs/electron-differential-updater": "^5.1.7",
23+
"dotenv": "^16.0.1",
2324
"electron-log": "^4.4.7",
2425
"electron-serve": "^1.1.0",
2526
"electron-store": "^8.0.1",
2627
"electron-updater": "^5.0.1",
2728
"framer-motion": "^6.3.11",
2829
"lodash": "^4.17.21",
30+
"node-fetch": "2.6.6",
2931
"react-icons": "^4.4.0",
3032
"update-electron-app": "^2.0.1"
3133
},

renderer/pages/home.tsx

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,82 @@
1+
import { Badge, Box, Button, Divider, Flex, Text } from "@chakra-ui/react"
2+
import { ipcRenderer, shell } from "electron"
3+
import { useEffect, useState } from "react"
14
import Main from "../components/Main"
25

6+
const Commit = ({ data }) => {
7+
8+
return (
9+
<Text _hover={{ textDecoration: "underline" }} cursor="pointer" onClick={() => shell.openExternal(data.html_url)}><code>{data.commit.message}</code> <Badge colorScheme="blue">{data.author.login}</Badge></Text>
10+
)
11+
}
12+
13+
const Release = ({ data }) => {
14+
15+
return (
16+
<Text _hover={{ textDecoration: "underline" }} cursor="pointer" onClick={() => shell.openExternal(data.html_url)}>
17+
<Badge colorScheme="green">{data.tag_name}</Badge> <code>{data.name}</code> <Badge colorScheme="blue">{data.author.login}</Badge>
18+
</Text>
19+
)
20+
}
21+
322
export default () => {
23+
const [firstFetch, setFetch] = useState(false)
24+
const [changelog, setChangelog] = useState([])
25+
const [releases, setReleases] = useState([])
26+
27+
useEffect(() => {
28+
29+
if (!firstFetch) {
30+
const init = async() => {
31+
if(navigator.onLine) {
32+
const CH = await ipcRenderer.invoke("get-changelog")
33+
const RL = await ipcRenderer.invoke("get-releases")
34+
if (CH.message) {
35+
setChangelog([])
36+
console.log("Could not fetch changelog")
37+
}
38+
else {
39+
setChangelog(CH)
40+
}
41+
42+
if (RL.message) {
43+
setReleases([])
44+
console.log("Could not fetch changelog")
45+
}
46+
else {
47+
setReleases(RL)
48+
}
49+
} else {
50+
setChangelog([])
51+
setReleases([])
52+
}
53+
}
54+
init()
55+
56+
setInterval(() => {
57+
init()
58+
}, 10000)
59+
60+
setFetch(true)
61+
}
62+
})
463

564
return (
665
<Main>
66+
<Flex w="calc(100vw - 100px)" p={5} wrap="wrap" gap={5} maxH="calc(100vh - 30px)" overflowY="auto">
67+
<Box p={5} rounded="md" border="2px solid white" bg="darkBackground">
68+
<Text fontWeight="bold">Recent Commits</Text>
69+
<Divider />
70+
{changelog.slice(0,9).map((data) => <Commit data={data} />)}
71+
</Box>
72+
73+
<Box p={5} rounded="md" border="2px solid white" bg="darkBackground">
74+
<Text fontWeight="bold">Releases</Text>
75+
<Divider />
76+
{releases.slice(0,9).map((data) => <Release data={data} />)}
77+
</Box>
778

79+
</Flex>
880
</Main>
981
)
1082
}

yarn.lock

Lines changed: 39 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2765,17 +2765,17 @@ copy-to-clipboard@3.3.1:
27652765
toggle-selection "^1.0.6"
27662766

27672767
core-js-compat@^3.21.0, core-js-compat@^3.22.1:
2768-
version "3.23.1"
2769-
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.23.1.tgz#23d44d9f209086e60dabf9130cea7719af6e199b"
2770-
integrity sha512-KeYrEc8t6FJsKYB2qnDwRHWaC0cJNaqlHfCpMe5q3j/W1nje3moib/txNklddLPCtGb+etcBIyJ8zuMa/LN5/A==
2768+
version "3.23.2"
2769+
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.23.2.tgz#5cbf8a9c8812d665392845b85ae91b5bcc7b615c"
2770+
integrity sha512-lrgZvxFwbQp9v7E8mX0rJ+JX7Bvh4eGULZXA1IAyjlsnWvCdw6TF8Tg6xtaSUSJMrSrMaLdpmk+V54LM1dvfOA==
27712771
dependencies:
27722772
browserslist "^4.20.4"
27732773
semver "7.0.0"
27742774

27752775
core-js-pure@^3.20.2:
2776-
version "3.23.1"
2777-
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.23.1.tgz#0b27e4c3ad46178b84e790dbbb81987218ab82ad"
2778-
integrity sha512-3qNgf6TqI3U1uhuSYRzJZGfFd4T+YlbyVPl+jgRiKjdZopvG4keZQwWZDAWpu1UH9nCgTpUzIV3GFawC7cJsqg==
2776+
version "3.23.2"
2777+
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.23.2.tgz#efe5e486469c5ed2d088d76e973eb12e74a930e7"
2778+
integrity sha512-t6u7H4Ff/yZNk+zqTr74UjCcZ3k8ApBryeLLV4rYQd9aF3gqmjjGjjR44ENfeBMH8VVvSynIjAJ0mUuFhzQtrA==
27792779

27802780
core-util-is@1.0.2:
27812781
version "1.0.2"
@@ -2954,6 +2954,11 @@ dotenv-expand@^5.1.0:
29542954
resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0"
29552955
integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==
29562956

2957+
dotenv@^16.0.1:
2958+
version "16.0.1"
2959+
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.1.tgz#8f8f9d94876c35dac989876a5d3a82a267fdce1d"
2960+
integrity sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==
2961+
29572962
dotenv@^9.0.2:
29582963
version "9.0.2"
29592964
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-9.0.2.tgz#dacc20160935a37dea6364aa1bef819fb9b6ab05"
@@ -3038,9 +3043,9 @@ electron-store@^8.0.1:
30383043
type-fest "^2.12.2"
30393044

30403045
electron-to-chromium@^1.4.147:
3041-
version "1.4.161"
3042-
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.161.tgz#49cb5b35385bfee6cc439d0a04fbba7a7a7f08a1"
3043-
integrity sha512-sTjBRhqh6wFodzZtc5Iu8/R95OkwaPNn7tj/TaDU5nu/5EFiQDtADGAXdR4tJcTEHlYfJpHqigzJqHvPgehP8A==
3046+
version "1.4.163"
3047+
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.163.tgz#d881ad93360001e79cdc871b3a5b5cd9c74e9639"
3048+
integrity sha512-c9q94pUVqIdc8hyr7jZDB4bNEoNF3QJ7y35lnddMD+mXtiv5GsL1bT/RmfW/KEOmvlNg5Oy1qioiy4tA7e864Q==
30443049

30453050
electron-updater@^5.0.1:
30463051
version "5.0.1"
@@ -4116,6 +4121,13 @@ node-addon-api@^1.6.3:
41164121
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.7.2.tgz#3df30b95720b53c24e59948b49532b662444f54d"
41174122
integrity sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==
41184123

4124+
node-fetch@2.6.6:
4125+
version "2.6.6"
4126+
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.6.tgz#1751a7c01834e8e1697758732e9efb6eeadfaf89"
4127+
integrity sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==
4128+
dependencies:
4129+
whatwg-url "^5.0.0"
4130+
41194131
node-releases@^2.0.5:
41204132
version "2.0.5"
41214133
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666"
@@ -4921,6 +4933,11 @@ toggle-selection@^1.0.6:
49214933
resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32"
49224934
integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==
49234935

4936+
tr46@~0.0.3:
4937+
version "0.0.3"
4938+
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
4939+
integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
4940+
49244941
truncate-utf8-bytes@^1.0.0:
49254942
version "1.0.2"
49264943
resolved "https://registry.yarnpkg.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b"
@@ -5109,6 +5126,11 @@ watchpack@^2.3.1:
51095126
glob-to-regexp "^0.4.1"
51105127
graceful-fs "^4.1.2"
51115128

5129+
webidl-conversions@^3.0.0:
5130+
version "3.0.1"
5131+
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
5132+
integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
5133+
51125134
webpack-merge@5.8.0:
51135135
version "5.8.0"
51145136
resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61"
@@ -5152,6 +5174,14 @@ webpack@5.72.0:
51525174
watchpack "^2.3.1"
51535175
webpack-sources "^3.2.3"
51545176

5177+
whatwg-url@^5.0.0:
5178+
version "5.0.0"
5179+
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
5180+
integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
5181+
dependencies:
5182+
tr46 "~0.0.3"
5183+
webidl-conversions "^3.0.0"
5184+
51555185
which@^2.0.1:
51565186
version "2.0.2"
51575187
resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"

0 commit comments

Comments
 (0)