Commit graph

164 commits

Author SHA1 Message Date
Simon Ser
a9c1abb064 Route channel mode and invite/except list to channel buffer 2021-06-07 14:13:00 +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
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
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
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
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
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
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
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
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
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
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