Simon Ser
d18cbbafb0
composer: focus on paste
2021-07-21 19:48:09 +02:00
Simon Ser
5b53fb6fe9
connect-form: improve HTML indentation
2021-07-04 21:51:42 +02:00
Simon Ser
a1d79cda4b
Drop ConnectForm key
2021-07-04 21:43:47 +02:00
Simon Ser
52ddda4e82
Unify dialog data in App.state
2021-07-04 21:41:36 +02:00
Simon Ser
af1e2e144a
Hide everything while loading config.json
2021-07-04 21:29:15 +02:00
Simon Ser
dee9e06b2f
connect-form: focus nickname input
2021-07-04 21:28:45 +02:00
Simon Ser
00eebc9859
composer: cycle through auto-completions
...
Closes: https://todo.sr.ht/~emersion/gamja/42
2021-06-30 22:20:40 +02:00
Simon Ser
08aefc9dc5
composer: add smart suffix after auto-completion
...
Append a space after a command name, so that arguments can be typed
directly. Append a colon after a nickname.
2021-06-30 21:56:45 +02:00
Simon Ser
856dd021e2
composer: auto-complete word at carret position
2021-06-30 21:50:55 +02:00
Simon Ser
b289fd10b7
Always mark own messages as read
2021-06-24 18:04:26 +02:00
Simon Ser
429450e060
Handle RPL_INVITING
2021-06-24 18:01:24 +02:00
Simon Ser
bc05fd5c11
Treat server broadcasts as highlights
2021-06-23 19:52:45 +02:00
Simon Ser
095006e961
Don't focus composer on key press if modifier is also pressed
2021-06-22 17:25:24 +02:00
Simon Ser
0d36e8a3fc
Turn dialog close button into a <button>
...
This is semantically more correct.
2021-06-22 16:02:55 +02:00
Simon Ser
1ea3180f5b
Use semantically more correct elements for error bubble
2021-06-22 15:48:42 +02:00
Simon Ser
724d7318cf
Focus buffer scrollview instead of composer
...
Instead of focusing the composer, focus the buffer scrollview when
switching to a buffer. This allows keyboard navigation to work as
expected, with arrow up/down and page up/down scrolling the buffer
instead of doing nothing.
Focus back the composer when a KeyboardEvent produces text. This
allows users to start typing a message right after switching to a
buffer.
Closes: https://todo.sr.ht/~emersion/gamja/64
2021-06-22 14:47:39 +02:00
Simon Ser
dc8f95c74d
Improve composer form indentation
2021-06-22 13:38:05 +02:00
Simon Ser
7d15525c7d
Allow resetting nick and auto-join with query params
2021-06-22 10:44:20 +02:00
delthas
edbf294380
component/app: Automatically prepend wss to server URL if unspecified
2021-06-20 21:08:02 +02:00
Simon Ser
f8060c9be2
Allow resetting server URL with query param
2021-06-20 13:00:40 +02:00
Simon Ser
37cff435a3
Move MODE state updates outof App
2021-06-11 12:44:14 +02:00
Simon Ser
ef50e62498
Add STATUSMSG indicator
...
Closes: https://todo.sr.ht/~emersion/gamja/65
2021-06-11 11:18:29 +02:00
Simon Ser
d19f127952
Move message key generation to State.addMessage
2021-06-11 10:58:09 +02:00
Simon Ser
56c18e3810
Make "Remove network" button red
2021-06-11 00:33:22 +02:00
Simon Ser
4249da4ba8
Add /quiet and /unquiet
2021-06-11 00:27:19 +02:00
Simon Ser
61e35dd68a
Bump direct message unread priority
2021-06-10 18:57:57 +02:00
Simon Ser
e56deb35c9
Ensure config has a server object
...
Simplifies code accessing the config.
2021-06-10 18:34:34 +02:00
Simon Ser
77030931cb
Reset config.server.auth when using custom server URL
2021-06-10 18:28:01 +02:00
Simon Ser
4df9328be8
Move auto-join field out of advanced options if pre-filled
...
Closes: https://todo.sr.ht/~emersion/gamja/82
2021-06-10 18:21:18 +02:00
Simon Ser
8972130252
s/var/let/
2021-06-10 18:11:11 +02:00
Simon Ser
4db845a4b1
Show again connect form when last server is closed
2021-06-10 18:06:45 +02:00
Drew DeVault
eef2093c88
Add "auth" parameter to tune connect form
2021-06-10 17:59:49 +02:00
Simon Ser
6039e13411
Add notification tags
...
This makes it so multiple messages from the same user will only
produce a single notification.
2021-06-10 17:11:21 +02:00
Simon Ser
63773f99ee
Add Notification workaround for Chrome on Android
...
Closes: https://todo.sr.ht/~emersion/gamja/78
2021-06-10 17:08:24 +02:00
Simon Ser
20f20b18df
Linkify MOTD
2021-06-10 12:09:07 +02:00
Simon Ser
02800dd21b
Don't open a new buffer on NOTICE
2021-06-10 12:07:17 +02:00
Simon Ser
dd8eca1cfe
Switch to server buffer on server name click
...
Closes: https://todo.sr.ht/~emersion/gamja/68
2021-06-10 12:03:50 +02:00
Simon Ser
e28769216a
Remove callback arg from App.createBuffer
2021-06-10 10:56:18 +02:00
Simon Ser
bf76eaa669
Add State.createServer
2021-06-10 10:54:33 +02:00
Simon Ser
2546d31af0
Blur the composer when hiding it
...
This should make toggling the composer in a server buffer more
reliable.
2021-06-07 15:18:15 +02:00
Simon Ser
a9c1abb064
Route channel mode and invite/except list to channel buffer
2021-06-07 14:13:00 +02:00
Simon Ser
5b7ab2652b
Improve buffer header layout on mobile
...
Put buffer title above buffer description.
2021-06-06 17:27:05 +02:00
Simon Ser
403d7ec7f7
Add case-mapping support to irc.isHighlight
...
Closes: https://todo.sr.ht/~emersion/gamja/77
2021-06-06 15:52:58 +02:00
Simon Ser
6b75985f96
Make <summary> easier to click on Firefox Mobile
...
Add role=button to mark the element as a touch target.
Closes: https://todo.sr.ht/~emersion/gamja/80
2021-06-06 12:05:57 +02:00
Simon Ser
41c113be9a
Show connect form during connection
...
This improves UX when the connection parameters (server URL,
username, password, and so on) are incorrect.
2021-06-06 11:33:00 +02:00
Simon Ser
0dfb7623db
Add support for labeled-response
...
It's just used to avoid mixing up messages coming from the server
so far.
2021-06-04 20:38:01 +02:00
Simon Ser
34078d5da7
Add support for draft/event-playback
2021-06-04 19:45:51 +02:00
Simon Ser
db7aa337cb
Remove App.isChannel
...
Replace all remaining usage with Client.isChannel. Client will be
able to use the ISUPPORT tokens to check if a name is a channel.
2021-06-04 19:13:59 +02:00
Simon Ser
87588abf27
Add State.addMessage
2021-06-04 19:07:14 +02:00
Simon Ser
04362644bf
Handle TOPIC in State.handleMessage
2021-06-04 18:57:02 +02:00
Simon Ser
30a345298f
Handle JOIN/PART in State.handleMessage
2021-06-04 18:53:06 +02:00
Simon Ser
2af58f8d0b
Move createBuffer to State
2021-06-04 18:37:34 +02:00
Simon Ser
2c1bb4ce6a
Introduce State.handleMessage
...
Takes an IRC message, updates the state.
Doesn't yet handle all messages, this will be a step-by-step process.
2021-06-04 18:27:21 +02:00
Simon Ser
4d988cafeb
Move some state utilities to state.js
2021-06-04 18:03:03 +02:00
Simon Ser
791b742684
Allow config.server.ping to be a String
...
Workaround for existing config files in the wild.
2021-06-04 17:50:49 +02:00
Simon Ser
6e20ad872e
Add support for STATUSMSG
...
Closes: https://todo.sr.ht/~emersion/gamja/65
2021-06-03 13:31:43 +02:00
Simon Ser
3b5b693403
Use bufName in addMessage, fix missing Client.isMyNick()
2021-06-03 13:29:32 +02:00
Simon Ser
283f8af4b1
lib/irc: rename IRC prefix utilities
2021-06-03 13:18:28 +02:00
Simon Ser
04c9f0211a
Fix undefined server variable in BufferHeader
2021-06-03 13:10:44 +02:00
Simon Ser
fe9c483570
s/network/server/
...
Closes: https://todo.sr.ht/~emersion/gamja/46
2021-06-03 11:46:50 +02:00
Simon Ser
63a71e5f5d
Add support for incoming INVITE messages
2021-06-03 11:04:32 +02:00
Simon Ser
a4294975a2
Add support for /ban without argument
2021-06-03 10:19:09 +02:00
Simon Ser
5004f6c89c
components/help: document that / allows to start writing a command
2021-06-02 22:53:28 +02:00
Simon Ser
91208a6d47
Add support for CHATHISTORY TARGETS
...
The main motivation is to avoid missing direct messages coming from
other users.
A nice side-effect is that we no longer need to issue CHATHISTORY
queries for each channel we JOIN: instead, we can only fetch
history for targets known to have new messages available (as indicated
by CHATHISTORY TARGETS).
We use read receipts instead of delivery receipts, so that reloading
the webapp restores the exact same state (ie, unread messages are
re-fetched).
References: https://github.com/ircv3/ircv3-specifications/pull/450
2021-06-02 20:37:20 +02:00
Tom Lebreux
0bcd044f10
Linkify channel names
2021-06-01 09:37:35 +02:00
Simon Ser
958b6bf120
Set enterkeyhint in composer
2021-05-31 18:16:49 +02:00
Simon Ser
8c02cdc094
Hide server URL input if set in config or query
...
Closes: https://todo.sr.ht/~emersion/gamja/52
2021-05-31 18:13:44 +02:00
Simon Ser
04932317f6
Populate server URL in fillConnectParams
2021-05-31 18:11:33 +02:00
Simon Ser
4fff2b1b8d
Unify connect params keys
2021-05-31 18:04:02 +02:00
Simon Ser
c632ef4339
Don't save default username/realname in local storage
2021-05-31 17:57:17 +02:00
Simon Ser
bc7162ebe2
Pretty-print buffer name in buffer header
2021-05-31 17:39:37 +02:00
Simon Ser
6e16163103
Re-fold HTML in BufferList
2021-05-31 17:34:36 +02:00
Simon Ser
ced63b0abc
Print server status in header prior to RPL_MYINFO
2021-05-31 17:30:45 +02:00
Simon Ser
619f1db08f
Introduce Client.who
2021-05-31 17:11:42 +02:00
Simon Ser
e271a3cd0e
Add /who
2021-05-31 17:02:56 +02:00
Simon Ser
14dbb60aec
Fix null membership on JOIN
2021-05-31 16:08:33 +02:00
Drew DeVault
be1ecf607d
Display prefixes in member list
...
Closes: https://todo.sr.ht/~emersion/gamja/43
2021-05-31 15:56:08 +02:00
Simon Ser
2c1e4b7bea
Fix commas in folded NICK messages
2021-05-31 14:08:30 +02:00
Simon Ser
ab11af3965
Init App.config
2021-05-31 12:26:57 +02:00
Simon Ser
b3d825c9d1
Hide composer when disconnected from server
2021-05-31 12:04:54 +02:00
Simon Ser
b0671fe336
Group folded events by type
2021-05-31 10:35:34 +02:00
Simon Ser
ce239e5785
Improve FoldGroup key and shouldComponentUpdate
2021-05-31 10:35:34 +02:00
Simon Ser
8b20b463ff
Display last event time when folding messages
2021-05-31 10:35:34 +02:00
Simon Ser
2bc89a6655
Filter out PART → JOIN pairs
2021-05-31 10:35:34 +02:00
Simon Ser
64674bdd9f
Fold unimportant messages together
2021-05-31 10:35:34 +02:00
Simon Ser
e080e87cb7
Pretty-print MOTD
2021-05-28 10:50:42 +02:00
Simon Ser
99ac0151a5
Use Client.isMyNick in NOTICE/PRIVMSG handling
2021-05-28 10:24:40 +02:00
Simon Ser
7b762b3e8a
Unregister PING timer when destroying client
2021-05-28 09:58:06 +02:00
Drew DeVault
6491f7e915
composer: turn off browser autocomplete
2021-05-28 08:53:37 +02:00
Simon Ser
fc9dfa2dca
Implement case-mapping for buffers and message handler
2021-05-27 23:40:08 +02:00
Simon Ser
06f7651bef
Ignore TAGMSG messages
...
We get these from clients that support typing notifications, for
instance.
2021-05-27 21:58:37 +02:00
Drew DeVault
258b0b0a3c
Restyle action buttons
2021-05-27 21:45:41 +02:00
Simon Ser
9567d56f53
Switch to channel buffer on /join
...
Closes: https://todo.sr.ht/~emersion/gamja/37
2021-05-27 19:10:42 +02:00
Drew DeVault
64900fbe80
Implement togglable sidebars for narrow viewports
...
Closed: https://l.sr.ht/96AD.jpg
Open: https://l.sr.ht/gr_9.jpg
2021-05-27 19:00:11 +02:00
Drew DeVault
d612c91016
Implement optional opportunistic pings
2021-05-27 18:31:04 +02:00
Drew DeVault
a0c85c3372
Handle incoming MODE messages in appropriate buffer
2021-05-27 18:01:58 +02:00
Simon Ser
f36bba897e
Fix cross-network mixups when handling QUIT and NICK
...
Only mutate buffers if they belong to our connection.
2021-05-27 15:19:28 +02:00
Simon Ser
b2cdab86aa
Add case-mapping support for channel members
...
Make a buffer's members an irc.CaseMapMap.
2021-05-27 15:17:18 +02:00
Simon Ser
d880b23d32
Add hint to run /help in unknown command error message
2021-05-27 12:55:28 +02:00
Simon Ser
45c12fb684
Add nick URL param
...
Closes: https://todo.sr.ht/~emersion/gamja/40
2021-05-27 12:32:22 +02:00
Simon Ser
fa80817168
Accomodate for empty BOUNCER host
...
BOUNCER doesn't support describing UNIX domain socket connections.
2021-05-27 11:51:29 +02:00
Simon Ser
071c2626d5
Open error bubbles for IRC numeric errors
2021-05-27 11:34:23 +02:00
Simon Ser
b8c4bb3112
Improve command error reporting
...
state.error is expected to be a String, not an Error.
2021-05-27 11:26:42 +02:00
Drew DeVault
d34bff9ed6
Implement /kick and KICK handling in buffers
2021-05-27 10:58:57 +02:00
Simon Ser
08678ba57e
Always parse autojoin channels from URL params
...
Even if connection parameters were previously saved to local storage.
2021-05-27 10:36:03 +02:00
Simon Ser
ac5bbafdc3
Fix config.json relative path
...
The path should be relative to index.html, not the JS file.
2021-05-26 23:17:23 +02:00
Simon Ser
17cd38f0b9
Read auto-join channels from browser URL hash
...
This is easier to type than trying to escape the # in ?channels=#XXX.
2021-05-26 22:57:49 +02:00
Simon Ser
695b02caaa
Introduce store helper
...
Responsible for serializing/deserializing data to be saved in
localStorage. Add a prefix to all localStorage entries to avoid
conflicts with other webapps. Stop guarding against localStorage
not existing, browsers can just implement a dumb interface to
disable it.
2021-05-26 18:43:11 +02:00
Simon Ser
12a38ace90
Add support for IRCv3 setname
2021-05-25 20:22:21 +02:00
Simon Ser
92535fae24
Ignore BOUNCER NETWORK messages if we're already bound to a network
2021-05-25 17:11:06 +02:00
Simon Ser
1b21f5f076
Display bouncer network status
2021-05-25 17:01:57 +02:00
Simon Ser
6524dc5dd2
Add support for the soju.im/bouncer-networks-notify cap
2021-05-25 17:01:20 +02:00
Simon Ser
94fba920cd
Fix close() for bouncer networks
2021-05-25 17:01:18 +02:00
Simon Ser
11642e1ab4
Add UI to edit/delete a network
2021-05-25 16:59:59 +02:00
Simon Ser
f84334c31e
Add UI to add a new bouncer network
2021-05-25 16:59:57 +02:00
Simon Ser
4c62b7571e
Indent channels and nicks in buffer list
2021-05-25 16:58:50 +02:00
Simon Ser
b429243573
Add support for the soju.im/bouncer-networks extension
2021-05-25 16:58:50 +02:00
Simon Ser
982a945932
Fix TypeError in handleBufferScrollTop
...
Fixes the following:
TypeError: client is undefined
2021-05-25 14:28:48 +02:00
Simon Ser
ed92c3c61a
Clear local storage when clicking "Disconnect"
2021-05-25 12:57:40 +02:00
Simon Ser
07c10b3b1f
Only switch to autojoin channel once
2021-05-25 12:40:33 +02:00
Simon Ser
d261886199
Add support for config file
...
Closes: https://todo.sr.ht/~emersion/gamja/20
2021-05-25 12:33:22 +02:00
Simon Ser
f122e44e9b
Use ISUPPORT CHATHISTORY to discover max page size
2021-05-11 16:10:50 +02:00
Simon Ser
305ffb569c
Parse ISUPPORT tokens in client
2021-05-11 16:03:16 +02:00
Simon Ser
e242d5222e
Fix TypeError in App.render()
...
Fixes the following error:
Uncaught (in promise) TypeError: activeBuffer is undefined
2021-05-10 15:09:49 +02:00
Simon Ser
727331c859
Remove client from map on disconnect
2021-03-10 11:01:04 +01:00
Simon Ser
4991518ed5
Display error popup on FAIL
2021-03-09 21:48:04 +01:00
Simon Ser
97e75805fa
Add some space between error message and close button
2021-03-09 21:47:39 +01:00
Simon Ser
88c0e5ae94
Break long tag attributes on multiple lines
...
Makes that stuff more readable.
2021-03-09 18:11:59 +01:00
Simon Ser
4257463b46
Rename Connect/Join to ConnectForm/JoinForm
2021-03-09 13:25:31 +01:00
Simon Ser
c83a74cc50
Cleanup compareBuffers
2021-03-09 12:04:12 +01:00
Simon Ser
56e705b6de
Only switch buffer on connect if there's no active buffer
2021-03-09 09:38:55 +01:00
Simon Ser
bf30038b41
Fix whitespace issues
2021-03-09 09:17:01 +01:00
Simon Ser
7139e4511b
Remove unused DEFAULT_NETWORK constant
2021-03-08 17:34:00 +01:00
Simon Ser
78f22fce4e
Add help section for commands
2021-03-08 17:25:00 +01:00
Simon Ser
17a2d48b2e
Add help dialog with keybindings reference
2021-03-08 17:05:48 +01:00
Simon Ser
30157383e8
Add dialog for join form
2021-03-08 16:23:16 +01:00
Simon Ser
996d7d06d4
Extract error message popup
2021-03-08 15:05:43 +01:00
Simon Ser
194168c062
Display server messages in server buffer
...
References: https://todo.sr.ht/~emersion/gamja/21
2021-03-08 14:27:05 +01:00
Simon Ser
3ece5f1ca5
Fix buffer not removed in close()
2021-03-03 09:59:40 +01:00
Simon Ser
72977b30b4
Log errors to console on command failure
2021-03-03 09:56:23 +01:00
Simon Ser
eaf3b0a5ac
Fix TypeError when clicking on nick in buffer
2021-03-03 09:41:19 +01:00
Simon Ser
80e0175d36
Make all resource paths relative
...
Closes: https://todo.sr.ht/~emersion/gamja/17
2021-03-02 22:46:48 +01:00
Simon Ser
a5608a40d5
Fix server URL field not auto-populated
2021-03-02 22:46:15 +01:00
Simon Ser
525df515bc
Fix messages in current buffer not marked as read
2021-03-02 21:29:13 +01:00
Simon Ser
a83d3f7425
Improve scroll position save/restore mechanism
2021-03-02 20:48:49 +01:00
Simon Ser
6c40561f61
Move join button to buffer header
2021-03-02 16:14:55 +01:00
Simon Ser
4d540d55ac
Fix undefined CHATHISTORY_PAGE_SIZE
2021-01-23 12:19:40 +01:00
Simon Ser
bfc0960200
Use buffer ID in BufferItem.onBufferClick
2021-01-22 21:43:58 +01:00
Simon Ser
0e078932c0
Harmonise client connection params
2021-01-22 21:00:39 +01:00
Simon Ser
430373dd13
Move chat history operations into Client
2021-01-22 18:51:38 +01:00