116 Commits

Author SHA1 Message Date
Simon Ser
405bc51c26 Handle click on irc:// channel URLs inside buffers
References: https://todo.sr.ht/~emersion/gamja/71
2021-10-13 16:18:59 +02:00
Simon Ser
631f119061 Switch from anchorme to linkifyjs 2021-10-13 15:33:41 +02:00
Simon Ser
21a4a71542 Add support for SASL EXTERNAL
Can be useful when the server is using e.g. a cookie for
authentication purposes.
2021-10-12 17:29:56 +02:00
Simon Ser
8cc61bf577 lib/client: handle MONITOR without value in ISUPPORT 2021-10-07 21:49:54 +02:00
Simon Ser
4577f0a27f components/buffer: pretty-print RPL_CHANNELMODEIS and RPL_CREATIONTIME 2021-10-06 12:12:49 +02:00
Simon Ser
19ee5553f6 components/buffer: add RPL_UMODEIS pretty-printing 2021-10-05 11:22:20 +02:00
Simon Ser
184b29b6e3 Hide meaningless real names 2021-09-21 17:24:39 +02:00
Simon Ser
329f9063d0 Add support for WHOX
This allows querying the account of the user.
2021-09-21 16:58:00 +02:00
Simon Ser
d12e1109b3 Add support for account-notify 2021-09-21 14:49:32 +02:00
Simon Ser
11878aaaa9 Add support for extended-join 2021-09-21 14:29:31 +02:00
Simon Ser
0b0467f019 lib/irc: drop CRLF for outgoing messages
Trailing CRLF must not be included in WebSocket messages.

Closes: https://todo.sr.ht/~emersion/gamja/104
2021-09-18 12:16:54 +02:00
Hubert Hirtz
f78cb8c23b Fix double space introduced before last param 2021-09-17 14:07:58 +02:00
Simon Ser
f17d61ed86 lib/irc: fix formatMessage when last arg starts with colon
Fixes: a51be5037d3f ("lib/irc: only add colon to trailing arg when necessary")
2021-09-08 10:42:36 +02:00
Simon Ser
76f097e8a8 lib/client: error out on unsupported WebSocket data type 2021-09-06 17:15:52 +02:00
Simon Ser
beef13d273 lib/client: remove WebSocket error event handler
The error event handler is useless, because the error event is never
emitted without a close event, and doesn't give any details about
the error.
2021-09-06 17:11:28 +02:00
Simon Ser
0137a95268 Add support for chghost
See https://ircv3.net/specs/extensions/chghost
2021-09-06 11:20:33 +02:00
Simon Ser
a51be5037d lib/irc: only add colon to trailing arg when necessary
This mirrors go-irc's behavior:

7ba1a1858f/parser.go (L374)

Closes: https://todo.sr.ht/~emersion/gamja/103
2021-09-06 10:52:06 +02:00
Simon Ser
c65ecd66eb Avoid sending empty MONITOR command on startup
Closes: https://todo.sr.ht/~emersion/gamja/102
2021-08-30 10:14:05 +02:00
Simon Ser
e283d9c7ab Add support for MONITOR 2021-08-24 12:53:46 +02:00
Simon Ser
51883292f9 lib/client: fix caps with equal sign in value
CAP=a=b wouldn't parse correctly.
2021-07-04 22:26:31 +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
c187eac3c8 lib/client: reject Client.roundtrip promise on disconnect 2021-06-21 00:18:17 +02:00
delthas
42e0c939f3 lib/linkify: stop using RegExp indices
Co-authored-by: Simon Ser <contact@emersion.fr>
Closes: https://todo.sr.ht/~emersion/gamja/90
2021-06-20 12:54:20 +02:00
Simon Ser
0b3f5ef88b Add irc.forEachChannelModeUpdate helper 2021-06-11 12:54:42 +02:00
Simon Ser
02ba4be438 Don't try to reconnect if the network is down 2021-06-11 09:36:11 +02:00
Simon Ser
4249da4ba8 Add /quiet and /unquiet 2021-06-11 00:27:19 +02:00
Simon Ser
8972130252 s/var/let/ 2021-06-10 18:11:11 +02:00
Simon Ser
a952742d86 Make Client.roundtripChatHistory return an array of messages 2021-06-10 12:47:28 +02:00
Simon Ser
5b0bb43a24 Make Client.fetchBatch more reliable 2021-06-10 12:43:09 +02:00
Simon Ser
ba92b3f677 lib/client: fix batch cleanup 2021-06-10 12:10:08 +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
d2e41666ad lib/client: set a default server prefix
Set the default server prefix to "*". This allows the rest of the
code to assume all messages always have a prefix.
2021-06-10 11:53:53 +02:00
Simon Ser
41354d3035 lib/client: gracefully handle null in isMyNick/isChannel 2021-06-10 08:51:59 +02:00
Simon Ser
0705f4b182 lib/client: always populate prefix for incoming messages 2021-06-10 08:49:17 +02:00
Simon Ser
52ca3bb91c lib/linkify: add comma to punctuation in channel regex 2021-06-09 16:28:07 +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
a419e660c0 Don't match punctuation suffix when linkifying channels 2021-06-06 16:00:37 +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
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
651e255ddb Use ISUPPORT CHANTYPES in Client.isChannel 2021-06-04 19:17:39 +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
6e20ad872e Add support for STATUSMSG
Closes: https://todo.sr.ht/~emersion/gamja/65
2021-06-03 13:31:43 +02:00
Simon Ser
283f8af4b1 lib/irc: rename IRC prefix utilities 2021-06-03 13:18:28 +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
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
Simon Ser
74d9dea5bb Use RegExp match indices in linkifyChannel 2021-06-01 09:53:11 +02:00
Tom Lebreux
0bcd044f10 Linkify channel names 2021-06-01 09:37:35 +02:00