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
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
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
80e0175d36
Make all resource paths relative
...
Closes: https://todo.sr.ht/~emersion/gamja/17
2021-03-02 22:46:48 +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
Simon Ser
4e1f06b960
Move auto-reconnect logic into Client
2021-01-22 18:44:06 +01:00
Simon Ser
41cd2153cf
Keep track of client status in Client
2021-01-22 18:29:22 +01:00
Simon Ser
2f70256037
Multiple clients per app
2021-01-22 17:36:53 +01:00
Simon Ser
95daea0ef7
Use buffer IDs in endOfHistory
2021-01-22 15:49:22 +01:00
Simon Ser
df2b46175a
Fix composer not hidden in server buffer
2021-01-22 12:05:45 +01:00
Simon Ser
e6592d7d8b
Print current connection status
2021-01-22 11:53:17 +01:00
Simon Ser
51523f4014
Extract network name from ISUPPORT
2021-01-22 11:43:47 +01:00
Simon Ser
b3f8b0c97d
Add support for RPL_ISUPPORT
2021-01-22 11:34:04 +01:00
Simon Ser
4acacc1f22
Nuke DEFAULT_NETWORK
2021-01-22 10:49:08 +01:00
Simon Ser
6cb2dd59de
Remove network from map when closing
2021-01-22 10:41:28 +01:00
Simon Ser
3975467764
Drop state.activeNetwork
...
Just grab it from state.activeBuffer's network.
2021-01-22 10:38:07 +01:00
Simon Ser
d2ff88d946
Sort buffers by network
2021-01-22 10:37:58 +01:00
Simon Ser
002b91a599
Take buffer ID in close
2021-01-22 10:26:53 +01:00
Simon Ser
ffed801b0e
Take a buffer ID in switchBuffer
2021-01-21 22:15:33 +01:00
Simon Ser
dd35f1df95
Take a buffer ID in getBuffer
2021-01-21 22:02:53 +01:00
Simon Ser
50ea6e121e
Introduce buffer IDs
2021-01-21 20:41:44 +01:00
Simon Ser
abc2fbcfb1
Add network to buffer state
2021-01-21 19:27:04 +01:00
Simon Ser
5a1e6ba813
Introduce state.networks
2021-01-21 19:01:50 +01:00
Simon Ser
f35f316577
Add disconnect/reconnect commands
2021-01-12 10:35:38 +01:00
Simon Ser
4b165054a4
Reconnect when loosing connection
2021-01-11 18:12:28 +01:00
Simon Ser
57ca2c44ad
Add unread message separator
...
Closes: https://todo.sr.ht/~emersion/gamja/4
2020-09-03 11:51:52 +02:00
Simon Ser
0b03f9d767
Ignore RPL_TOPICWHOTIME
...
We don't need this piece of information yet, and we don't want to
clutter the server buffer with channel messages.
2020-09-03 11:36:08 +02:00
Simon Ser
bce216b7fb
Parse all CTCP messages
...
We display them nicely, however we never reply to them.
2020-08-13 16:04:39 +02:00
Simon Ser
028382aab3
Strip ANSI sequences from notifications text
2020-08-13 15:38:12 +02:00