Commit Graph

27 Commits

Author SHA1 Message Date
Jeremy Kahn
f6a3e30da2
feat(sdk): Implement Chitchatter SDK (#183)
* feat(sdk): render iframe in chat-room component
* fix(ci): install optional dependencies
* feat(sdk): allow subset of attributes
* feat(sdk): accept root-domain attribute
* feat(sdk): accept custom room name or use sane default
* feat(sdk): set allowed features
* feat(sdk): add sdk instructions to embed code dialog
* fix(sdk): use dynamic rootUrl
* fix(sdk): use static defaultRoot
* feat(sdk): send config from SDK to chat
* fix(sdk): expire poller
* fix(sdk): pass parent domain to iframe via query param
* refactor(sdk): type message event data
* feat(sdk): send user id to chat frame
* feat(sdk): handle some attribute updates
* chore(package): add build:sdk:watch script
* refactor(sdk): move more code to updateIframeAttributes
* feat(sdk): support changing rooms
* feat(sdk): support more user settings
* docs(sdk): add SDK section to README
* feat(sdk): render root-url in embed code if necessary
* refactor(sdk): use map for chat room attributes
* fix(sdk): unbind event listener when chat-room is disconnected
* fix(sdk): properly tear down receipt listener
* fix(sdk): send config when frame reloads
* feat(sdk): listen for config updates
* feat(sdk): request config from sdk instead of sending it repeatedly
* refactor(sdk): use type guard for config message
* fix(sdk): use settings from SDK when there is no preexisting persisted data
* fix(sdk): observe all iframe attributes
* refactor(sdk): simplify bootup logic
* feat(sdk): improve embed code display
2023-10-28 11:42:58 -05:00
Jeremy Kahn
7acf267558
feat(embed): [closes #92] Embed support (#177)
* feat(embed): [#92] hide unnecessary UI when embedded
* feat(embed): [#92] provide embed code
2023-10-08 13:19:46 -05:00
Jeremy Kahn
3413f37d8c feat(typing-indicator): add setting to disable typing indicator 2023-07-28 09:50:03 -05:00
Jeremy Kahn
e597a667a1
feat(chat): [closes #13] Active typing indicators (#133)
* feat(typing-indicator): wire up handleMessageChange
* feat(typing-indicator): send typing: true status
* feat(typing-indicator): expire typing state
* feat(typing-indicator): update typing state received from peers
* refactor(shell): add updatePeer utility
* feat(typing-indicator): display peer typing status
* feat(typing-indicator): reset typing status when a message is sent
* feat(typing-indicator): move indicator below message form
* feat(typing-indicator): keep status text to one line
2023-07-27 21:06:35 -05:00
Jeremy Kahn
9b9d294f98
feat(connection-test): [closes #127] Explain tracker connection problems (#130)
* feat(connection-test): [closes #127] explain tracker connection problems
2023-07-16 17:45:16 -05:00
Jeremy Kahn
f67dbb60d3
feat(connection-test): display failed tracker connections (#129) 2023-07-14 17:21:25 -05:00
Jeremy Kahn
291ed0c2b9
feat(connection-test): Display tracker connection status (#128)
* feat(ConnectionTest): track tracker state
* feat(ConnectionTest): show tracker searching state
* chore(deps): use github:jeremyckahn/trystero#feature/get-tracker-connections
* feat(connection-test): hide network indicator in non-room routes
* feat(connection-test): show peer searching status
* feat(connection-test): hide peer searching UI when not in a room
2023-07-13 09:50:54 -05:00
Jeremy Kahn
3977a82224
feat: Connection status (#119)
* feat: implement ConnectionTest
* feat: display connection results
* feat: keep network status up to date
2023-03-27 21:51:33 -05:00
Jeremy Kahn
4cf75b15b0
feat: [closes #15] Show connection type (#117)
* feat: [#15] implement getPeerConnectionTypes
* feat: [#15] display connection type icon
* refactor: extract PeerListItem to its own file
* feat: [#15] show connection details via tooltip
* fix: style stable peer name
2023-03-25 14:40:07 -05:00
Jeremy Kahn
7ba62c030b refactor: remove numberOfPeers state 2023-03-15 10:10:17 -05:00
Jeremy Kahn
d6f9b10ce2 feat: don't automatically close sidebars 2023-03-15 10:10:17 -05:00
Jeremy Kahn
dfe510e642
feat: [closes #76] Custom usernames (#93)
* feat: add Username component
* feat: set custom username state
* feat: update custom username on input blur
* feat: inform peers of username updates
* feat: display username for peers
* feat: show static name in parentheses
* feat: use display name in message notification
* feat: remove username display from Shell Drawer
* feat: persist customUsername
2023-03-04 12:55:37 -06:00
Jeremy Kahn
870a13eac1
feat: [closes #77] Peer audio volume control (#90)
* feat: add AudioVolume component
* feat: show volume slider label value
* feat: update audio volume icon
* feat: mute/unmute when volume icon is clicked
* feat: show peer dividers
2023-02-26 18:26:53 -06:00
Nasal Daemon
8493ddade5
Give video display as much space as possible (#84)
* Move room tools to top of page to use full width
Allow messages to be hidden while video is displaying
Allow video display to utilise all available width
Track unread messages while they are hidden
* Better portrait behaviour
* Show room controls by default
* Show room controls at same time as app bar
Improve video height calc.

Co-authored-by: Jeremy Kahn <jeremyckahn@gmail.com>
2023-01-23 21:50:14 -06:00
Nasal Daemon
fcec242194
[closes #75] Easier sharing of private rooms (#81)
* Add URL secret reading logic
* Add private url share dialog
* Salt password hash with roomId
* Don't allow incorrect password to be entered

Co-authored-by: Jeremy Kahn <jeremyckahn@gmail.com>
2023-01-08 14:37:30 -06:00
Jeremy Kahn
5d3d019cd6
feat: [closes #33] Render inline media (#73)
* refactor: pass inline media upload data to useRoom
* feat: render inline media
* fix: don't rescind inline media file offers
* refactor: send file offer metadata object
* fix: enable re-seeding of inline media files
* feat: show loading indicator for inline media
* feat: rescind any evicted inline media
* feat: display media rendering failure message
* feat: prevent user from uploading file if message is sending
2022-11-28 21:18:41 -06:00
Jeremy Kahn
f006e76e80
feat: [closes #21] File sharing (#72)
* feat: [#21] stand up file sharing controls UI
* feat: [#21] implement basic file transfer
* feat: [#21] save transferred file
* feat: [#21] transfer file via WebTorrent
* fix: use external streamsaver assets
* feat: [#21] initiate download by receiver click
* fix: enable re-downloading of shared files
* feat: [#21] implement sharing of multiple files
* chore: enable offline development
* feat: cache torrents in IndexedDB
* feat: show alert when download is aborted
* feat: [#21] clean up torrent data when principal offerer rescinds it
* feat: clean up cached torrents on page unload
* feat: show file transfer progress
* fix: download files sequentially
* feat: clean up file transfers when leaving the room
* feat: clean up broken downloads upon leaving the page
* fix: allow download animation to complete
* feat: show tooltip for download button
* feat: make file transfers work in browser private modes
* feat: disable file share controls while creating offer
2022-11-24 00:16:34 -06:00
Jeremy Kahn
75a804abbd
feat: [closes #67] Screen sharing (#68)
* feat: [#67] stand up useRoomScreenShare hook
* feat: [#67] stand up RoomScreenShareControls
* feat: [#67] display screen share streams
* fix: [#67] don't flip screen share preview
* feat: don't display screen share controls in unsupported environments
* fix: [#67] always remove media streams for exiting peers
2022-11-13 17:11:09 -06:00
Jeremy Kahn
19d0faaccc refactor: move video stream data into new room context 2022-11-06 20:49:48 -06:00
Jeremy Kahn
828e3c12b9
feat: [closes #20] Video support (#64)
* refactor: nest ChatTranscript
* feat: set up video controls
* feat: show self video
* feat: show peer video
* feat: improve audio/video controls display
* feat: flip self video
* feat: improve device selection labels
2022-11-06 13:36:15 -06:00
Jeremy Kahn
ba21936c96 feat: [#19] display which peers are speaking to the room 2022-10-31 21:40:44 -05:00
Flaykz
26618c0309
feat: [closes #14] Display peer list (#28)
* feat: [#14] Display peer list

Co-authored-by: Jeremy Kahn <jeremyckahn@gmail.com>
2022-10-04 09:08:38 -05:00
Jeremy Kahn
b4decae69c
feat: [closes #6] Show notifications for messages recieved in the background (#31)
* feat: [#6] show notification when message is received
* feat: [#6] add setting for enabling/disabling notifications
* refactor: [#6] decouple PeerNameDisplay from funAnimalName
* feat: [#6] disable notifications setting when notifications are unavailable
2022-09-29 21:56:28 -05:00
Flaykz
492cfa58ce
feat: [#7] Play a sound on new message (#25)
* feat: [#7] Play a sound on new message

* fix: [#7] Since this mock is a no-op, I think we can omit the argument to mockImplementation

Co-authored-by: Jeremy Kahn <jeremyckahn@gmail.com>

* fix: [#7] lazy initialization of this state

Co-authored-by: Jeremy Kahn <jeremyckahn@gmail.com>

* fix: [#7] More accurate error message

Co-authored-by: Jeremy Kahn <jeremyckahn@gmail.com>

* fix: [#7] Replace then with await

* [closes #24]  Settings UI (#26)

* feat: [#24] wire up settings page
* feat: [#24] stand up settings UI
* feat: [#24] implement storage deletion
* feat: [#24] confirm deletion of settings data

* feat: [#7] Add play sound switch in settings

* feat: [#7] avoid typescript warning

Co-authored-by: Jeremy Kahn <jeremyckahn@gmail.com>

* feat: [#7] more straighforward wording

Co-authored-by: Jeremy Kahn <jeremyckahn@gmail.com>

* feat: [#7] remove useless usestate

* feat: [#7] avoid new settings to be undefined in persisted storage

* feat: [#7] creating a chat section in settings

Co-authored-by: Jeremy Kahn <jeremyckahn@gmail.com>
2022-09-26 08:10:31 -05:00
Jeremy Kahn
e259196942
[closes #24] Settings UI (#26)
* feat: [#24] wire up settings page
* feat: [#24] stand up settings UI
* feat: [#24] implement storage deletion
* feat: [#24] confirm deletion of settings data
2022-09-23 17:40:34 -05:00
Jeremy Kahn
7fb46bfe27 feat: persist color theme setting 2022-09-05 17:35:40 -05:00
Jeremy Kahn
82673d54fd refactor: move ShellContext to contexts directory 2022-09-05 12:17:10 -05:00