Skip to content
This repository was archived by the owner on Aug 15, 2022. It is now read-only.

Commit c439c54

Browse files
committed
feat(chat): notifications
1 parent 5db2b42 commit c439c54

3 files changed

Lines changed: 43 additions & 2 deletions

File tree

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,15 @@
1515
"@oclif/config": "^1",
1616
"@oclif/plugin-help": "^3",
1717
"blessed": "^0.1.81",
18+
"node-notifier": "^10.0.0",
1819
"tslib": "^1",
1920
"wrtc": "^0.4.7"
2021
},
2122
"devDependencies": {
2223
"@oclif/dev-cli": "^1",
2324
"@types/blessed": "^0.1.19",
2425
"@types/node": "^17.0.13",
26+
"@types/node-notifier": "^8.0.2",
2527
"eslint": "^7.32.0",
2628
"eslint-config-oclif": "^3.1.2",
2729
"eslint-config-oclif-typescript": "^0.2.0",

src/chat.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {Stack} from '@dstack-js/lib'
66
import {PubSub} from '@dstack-js/lib/src/pubsub'
77
const wrtc = require('wrtc')
88
import * as blessed from 'blessed'
9+
import {notify} from 'node-notifier'
910

1011
interface Message {
1112
nickname?: string;
@@ -147,7 +148,16 @@ export const run = async (room: string, nickname?: string) => {
147148
input.focus()
148149

149150
await pubsub.subscribe('chat', event => {
150-
messageList.addItem(`${event.data.nickname ? `${event.data.nickname} (${event.from.slice(-5)})` : event.from.slice(-5)}: ${event.data.message}`)
151+
const name = event.data.nickname ? `${event.data.nickname} (${event.from.slice(-5)})` : event.from.slice(-5)
152+
messageList.addItem(`${name}: ${event.data.message}`)
153+
154+
try {
155+
if (event.from !== stack.id) notify({
156+
title: `Peerchat #${room} | ${name}`,
157+
message: event.data.message,
158+
})
159+
} catch {}
160+
151161
messageList.scrollTo(100)
152162
screen.render()
153163
})

yarn.lock

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -710,6 +710,13 @@
710710
resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197"
711711
integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==
712712

713+
"@types/node-notifier@^8.0.2":
714+
version "8.0.2"
715+
resolved "https://registry.yarnpkg.com/@types/node-notifier/-/node-notifier-8.0.2.tgz#77c5de29c6e8adb915222b01864128cc3e78d553"
716+
integrity sha512-5v0PhPv0AManpxT7W25Zipmj/Lxp1WqfkcpZHyqSloB+gGoAHRBuzhrCelFKrPvNF5ki3gAcO4kxaGO2/21u8g==
717+
dependencies:
718+
"@types/node" "*"
719+
713720
"@types/node@*", "@types/node@>=13.7.0", "@types/node@^17.0.13":
714721
version "17.0.13"
715722
resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.13.tgz#5ed7ed7c662948335fcad6c412bb42d99ea754e3"
@@ -2241,6 +2248,11 @@ graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0,
22412248
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96"
22422249
integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==
22432250

2251+
growly@^1.3.0:
2252+
version "1.3.0"
2253+
resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081"
2254+
integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=
2255+
22442256
hamt-sharding@^2.0.0:
22452257
version "2.0.1"
22462258
resolved "https://registry.yarnpkg.com/hamt-sharding/-/hamt-sharding-2.0.1.tgz#f45686d0339e74b03b233bee1bde9587727129b6"
@@ -3992,6 +4004,18 @@ node-gyp-build@^4.3.0:
39924004
resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.3.0.tgz#9f256b03e5826150be39c764bf51e993946d71a3"
39934005
integrity sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==
39944006

4007+
node-notifier@^10.0.0:
4008+
version "10.0.0"
4009+
resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-10.0.0.tgz#93c154055b07b550a33a1966a1b11291c2113e69"
4010+
integrity sha512-ZTqP90y1eyb2xAZTa7j4AlAayTwh6cL8mn0nlJhLDq8itXGnJUmQGYOnpaMUvqZVfGo0vhU7KZ3HtDW6CT2SiQ==
4011+
dependencies:
4012+
growly "^1.3.0"
4013+
is-wsl "^2.2.0"
4014+
semver "^7.3.5"
4015+
shellwords "^0.1.1"
4016+
uuid "^8.3.2"
4017+
which "^2.0.2"
4018+
39954019
node-pre-gyp@^0.13.0:
39964020
version "0.13.0"
39974021
resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.13.0.tgz#df9ab7b68dd6498137717838e4f92a33fc9daa42"
@@ -4793,6 +4817,11 @@ shebang-regex@^3.0.0:
47934817
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
47944818
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
47954819

4820+
shellwords@^0.1.1:
4821+
version "0.1.1"
4822+
resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
4823+
integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==
4824+
47964825
signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3:
47974826
version "3.0.6"
47984827
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af"
@@ -5321,7 +5350,7 @@ which@^1.2.9:
53215350
dependencies:
53225351
isexe "^2.0.0"
53235352

5324-
which@^2.0.1:
5353+
which@^2.0.1, which@^2.0.2:
53255354
version "2.0.2"
53265355
resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
53275356
integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==

0 commit comments

Comments
 (0)