Simon Ser
bc3abbec32
lib/client: catch handleMessage errors
2021-11-21 13:48:07 +01:00
Simon Ser
4f927b5536
lib/client: always request sasl cap when available
...
This will allow us to issue post-registration SASL commands.
2021-11-21 13:35:32 +01:00
Simon Ser
86b08296a0
lib/client: don't disconnect on SASL error if registered
...
This will let users try multiple auth attempts when we'll implement
post-registration auth.
2021-11-21 13:23:14 +01:00
Simon Ser
25dd6aabf6
lib/client: remove one roundtrip during SASL auth
...
Instead of waiting for the server's empty challenge, send two
AUTHENTICATE commands in a row.
2021-11-21 13:21:42 +01:00
Simon Ser
51bf8da3d6
lib/client: don't error out if SASL isn't available on RPL_WELCOME
...
Some servers (soju) might remove the sasl cap on connection
registration.
2021-11-19 19:32:13 +01:00
Simon Ser
55361c5a2b
Store WHO list in RPL_ENDOFWHO
...
This allows the state-tracker to figure out whether a WHO query
returned no result.
2021-11-10 10:32:23 +01:00
Simon Ser
c11bf6508a
Only allow one WHO command at a time
...
Closes: https://todo.sr.ht/~emersion/gamja/120
2021-11-10 10:08:47 +01:00
Simon Ser
195e4ca371
Don't stop fetching backlog on error
...
Some servers allow fetching history from some targets but not
others. Don't completely stop fetching chat history on error.
The root cause was a variable shadowing in Client.fetchBatch.
2021-11-10 09:53:17 +01:00
Simon Ser
1206cfae37
Add support for draft/extended-monitor
...
References: https://github.com/ircv3/ircv3-specifications/pull/466
2021-11-09 12:50:11 +01:00
Simon Ser
74fe6ee944
Auto-join when adding new network on irc:// link click
...
Closes: https://todo.sr.ht/~emersion/gamja/111
2021-11-07 19:47:49 +01:00
Simon Ser
eb66045371
lib/client: use Client.isMyNick to handle self-NICK messages
...
This handles case-mapping.
2021-11-03 21:50:33 +01:00
Simon Ser
ac7785aa7f
lib/client: fix missing account in WHOX
2021-11-02 17:58:00 +01:00
Simon Ser
92043ded2c
lib/client: generalize pendingWHOIS, store list in ENDOF* messages
...
This allows processing a list of replies atomically and receiving
the ENDOF* marker.
2021-10-23 20:03:57 +02:00
Simon Ser
b059e034e2
lib/client: rename whoisDB to pendingWHOIS, garbage collect
2021-10-23 19:48:04 +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
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
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
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
c187eac3c8
lib/client: reject Client.roundtrip promise on disconnect
2021-06-21 00:18:17 +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
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
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
63a71e5f5d
Add support for incoming INVITE messages
2021-06-03 11:04:32 +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
06ca812d06
Simplify Client.roundtrip callback arg
2021-05-31 17:14:46 +02:00
Simon Ser
619f1db08f
Introduce Client.who
2021-05-31 17:11:42 +02:00
Simon Ser
02145b45ad
Remove unused arg from Client.whois
2021-05-31 17:04:52 +02:00
Simon Ser
5a3edf4769
Fix WHOIS DB not using case-mapping fallback
...
In case the server advertises an unsupported case-mapping, we have
a fallback.
2021-05-28 09:59:51 +02:00
Simon Ser
7b762b3e8a
Unregister PING timer when destroying client
2021-05-28 09:58:06 +02:00
Simon Ser
24fe62f1de
Ensure msg.prefix is always populated
2021-05-28 09:49:21 +02:00
Simon Ser
fc9dfa2dca
Implement case-mapping for buffers and message handler
2021-05-27 23:40:08 +02:00
Drew DeVault
121d7ec075
Add /whois command
...
This also rigs up some helpers in Client for handling the whois
response, which I will use for /ban and /quiet and such shortly.
2021-05-27 23:15:53 +02:00
Simon Ser
615e746ec5
lib/client: add Client.cm
...
This contains the current connection case-mapping, parsed from the
CASEMAPPING ISUPPORT token.
2021-05-27 15:14:03 +02:00