Simon Ser
84b68308b9
components/app: switch off loading state atomically
...
Set connectParams together with loading, to avoid intermediate
state where loading = false but connectParams isn't set yet.
2022-09-12 13:42:44 +02:00
Simon Ser
4964782c30
Display error in loading state
2022-09-12 13:41:23 +02:00
Simon Ser
54e1fc93d9
Add config option to generate random nickname
...
Closes: https://todo.sr.ht/~emersion/gamja/136
2022-09-12 13:04:59 +02:00
Simon Ser
34d3bd6df9
Remove unnecessary if in App.handleConfig
...
config.json is merged with baseConfig. The latter is guaranteed
to contain a "server" field.
2022-09-12 09:54:38 +02:00
Simon Ser
a13f74d466
Disallow server.{autoconnect,auth} mismatch in config.json
...
This combination doesn't make sense.
2022-09-12 09:48:49 +02:00
Simon Ser
a603b79e33
components/buffer-list: show buffers with errors in red
2022-09-05 14:00:52 +02:00
Nolan Prescott
096fcbf829
Sort lists with localeCompare
...
The difference in case sensitivity is the most obvious change with
servers like soju that support CASEMAPPING ascii and
rfc1459. Currently the list:
'Alpha', 'aardvark', 'Charlie', 'comma'
currently sorts to:
'Alpha', 'Charlie', 'aardvark', 'comma'
with this change it will instead become:
'aardvark', 'Alpha', 'Charlie', 'comma'
If something like RFC 7613 gets broader support then there are a few
more differences for a list like:
'éclair', 'ecstatic, 'aardvark', 'zed', 'Gamma'
currently sorts to:
'Gamma', 'aardvark', 'ecstatic', 'zed', 'éclair'
with this patch would instead sort to:
'aardvark', 'éclair', 'ecstatic', 'Gamma', 'zed'
The above examples were run with a locale unspecified which fell back
to my browser/host default of 'en'.
2022-09-05 09:03:42 +02:00
Simon Ser
a2d2a11d44
Drop support for soju.im/read
...
It's been superseded by draft/read-marker.
2022-09-03 14:41:53 +02:00
Simon Ser
aa9aa78d71
Fix ignored MARKREAD messages
...
The prefix is a remnant of the soju extension. The IRCv3 one
doesn't have it.
Fixes: 1428ec4d49
("Add support for draft/read-marker")
2022-09-03 14:40:46 +02:00
Simon Ser
4780b9c709
Fetch read marker before backlog for user targets
2022-09-03 14:31:56 +02:00
Simon Ser
e7b69cec9a
Limit composer length
...
Often times IRC servers will truncate messages which are too big.
2022-08-28 19:16:41 +02:00
xse
cfbd91d257
Make use of destBuffers when fetching history.
...
Fixes an issue where messages intended to go on the server's buffer end up on their own
2022-08-22 12:46:03 +02:00
Simon Ser
7138e43710
Ignore RPL_CHANNEL_URL
2022-08-22 10:35:50 +02:00
Simon Ser
89647472ae
components/app: don't open buffer for CTCP messages
...
These are usually completely uninteresting messages, e.g. CTCP
VERSION or whatever.
2022-08-22 10:30:56 +02:00
Simon Ser
1428ec4d49
Add support for draft/read-marker
...
References: https://github.com/ircv3/ircv3-specifications/pull/489
2022-07-01 13:35:27 +02:00
Simon Ser
d0064dd647
components/buffer: show disclaimer for +draft/channel-context messages
2022-06-28 15:55:35 +02:00
delthas
b9693d53ec
Support @+draft/channel-context
...
See: https://github.com/ircv3/ircv3-specifications/pull/498
2022-06-28 15:33:38 +02:00
Simon Ser
f6ba40046f
components/buffer-header: fix duplicate settings button
2022-06-28 15:11:48 +02:00
Simon Ser
fa80a56516
Add button to enable protocol handler in settings
2022-06-27 17:01:15 +02:00
Simon Ser
7cabb6f85b
Add a setting for seconds in timestamps
2022-06-27 16:34:41 +02:00
Simon Ser
f0c398a10c
components/buffer-header: print bouncer network error if any
2022-06-09 15:54:29 +02:00
Simon Ser
baaf576d82
Add a settings dialog
...
Add an option to hide chat events or always expand them.
Closes: https://todo.sr.ht/~emersion/gamja/73
2022-06-08 16:57:16 +02:00
Simon Ser
e3c2d85a94
Fix ping config lost in ConnectForm
...
Reported-by: xse <xse@riseup.net>
References: https://lists.sr.ht/~emersion/public-inbox/patches/32126
2022-06-08 15:14:06 +02:00
Umar Getagazov
576b9d51eb
components/app: switch to server buffer on close only if active
...
If the buffer that's being closed is not the active one, there's no
point in switching the user away to another buffer.
2022-06-08 15:05:26 +02:00
Simon Ser
6b04cb1417
Add support for bot mode
...
References: https://ircv3.net/specs/extensions/bot-mode
2022-06-08 15:04:27 +02:00
Simon Ser
8507500d74
components/scroll-manager: don't crash when Buffer is empty
2022-04-22 12:32:54 +02:00
Simon Ser
cdd2da90a9
Update webpage title when switching buffer
2022-04-22 11:49:23 +02:00
Simon Ser
4a981997f0
Handle CHATHISTORY messages when reaching end of batch
...
Closes: https://todo.sr.ht/~emersion/gamja/115
2022-04-22 11:25:41 +02:00
Simon Ser
3dc98ec797
Convert remaining simple quotes to double quotes
2022-02-26 09:54:31 +01:00
Simon Ser
08578c9a21
components/app: fix missing semicolons
2022-02-21 15:26:12 +01:00
Simon Ser
37d7f4a1c5
Refactor backlog fetching into function
2022-02-13 15:34:11 +01:00
Simon Ser
962c05c066
Prevent hole in history when reconnecting
2022-02-13 15:26:04 +01:00
Simon Ser
f2c9fd1d7f
Update stored unread status on READ message
2022-02-12 10:24:56 +01:00
Simon Ser
2ac7be6218
state: add isReceiptBefore
2022-02-12 10:21:11 +01:00
Simon Ser
5f8cd976e6
keybindings: fix error on alt+h
...
Fixes the following JS error:
TypeError: e.setReceipt is not a function
2022-02-12 10:05:58 +01:00
Simon Ser
fbc42b6dab
components/app: move lastErrorID declaration down
...
Move it right before App, rather than drown in-between unrelated
functions.
2022-02-11 21:17:35 +01:00
Simon Ser
dc398baa3b
components/app: stop updating prevReadReceipt on READ message
...
prevReadReceipt is used for the unread marker. Let's not update it
before the user switches the current buffer.
2022-02-11 21:09:11 +01:00
Simon Ser
f47d93af8a
Don't fetch backlog before read receipt
2022-02-11 21:02:34 +01:00
Simon Ser
fce0936c20
components/app: introduce getReceipt
2022-02-11 20:59:31 +01:00
Simon Ser
0636544c40
components/app: close notifications when receiving READ message
2022-02-11 19:32:30 +01:00
Simon Ser
7c6f334dbf
components/app: close notifications when switching buffer
2022-02-11 19:32:30 +01:00
Simon Ser
7ddd783150
components/app: make showNotification return null on error
...
We'll do more involved stuff with notifications soon, and don't
want to deal with buggy notification objects.
2022-02-11 19:32:30 +01:00
Simon Ser
bb42ff6a07
components/app: include server ID in notification tags
2022-02-11 19:32:30 +01:00
Simon Ser
db0ef39c6b
Add support for soju.im/read
2022-02-11 19:32:26 +01:00
Simon Ser
065b3f21fc
Refactor receipts
...
They are now saved in the buffer store to allow for proper server
separation.
2022-02-11 19:29:55 +01:00
Simon Ser
d2bcea8c86
Introduce isMessageBeforeReceipt
2022-02-11 16:37:58 +01:00
Simon Ser
3d81466788
components/app: introduce receiptFromMessage
2022-02-11 16:30:46 +01:00
Simon Ser
39c36e7a7b
Fix unread marker going back
...
Receipts must never go back in time.
Fixes: c428e504fe
("Don't show unread marker for outgoing messages")
2022-02-11 16:06:06 +01:00
Simon Ser
e91b044134
components/app: make switchBuffer state changes atomic
...
Instead of calling App.setBufferState inside the App.setState
callback invoked when the update is done, call State.updateBuffer.
2022-02-11 15:48:56 +01:00
delthas
4cb3abfa72
components/connect-form: make the server password field password-typed
2022-02-11 12:58:26 +01:00
Дамјан Георгиевски
1142145c6d
fix ping after reconnect
...
client.setPingInterval was only called once in app.connect(),
but client.disconnect() disables it, and the ping timer is never again set,
even though the client can reconnect.
the change passes the ping time as a parameter to the client, and the
client calls setPingInterval() after a successful WS open event.
2022-02-04 15:54:23 +01:00
Simon Ser
7f7a7c1aac
components/buffer-list: remove pointless temporary variable
2022-02-04 14:32:29 +01:00
Simon Ser
e1bbe34ff2
state: add bouncerNetworks helpers
2022-02-04 14:22:50 +01:00
delthas
fab42ba2ee
commands: add password param to /join
2022-02-02 20:45:18 +01:00
xse
393fd93253
components/buffer: use browser locale for date-separator
2022-01-14 23:26:05 +01:00
Simon Ser
a0f8f1f52f
components/buffer: fix INVITE link
...
It was throwing a TypeError.
2022-01-10 10:32:37 +01:00
Simon Ser
6692ed0035
components/help: use bold for command name only
2022-01-09 19:28:23 +01:00
Simon Ser
5e34067d38
components/help: remove "/" keybinding, document middle mouse click
2022-01-09 19:20:44 +01:00
Noelle Leigh
0b59cf92b9
Display persistant command input on server buffer
...
This commit changes the composer to not be read-only on the server
buffer, which tells the user that they can send commands from that view.
On the server buffer, the placeholder is changed to
"Type a command (see /help)", which indicates to the user that this buffer
only accepts commands, and gives them a hint for how to learn what
commands are available.
Implements: https://todo.sr.ht/~emersion/gamja/38
2021-12-21 10:44:24 +01:00
Simon Ser
4cabae89ff
lib/irc: add CapRegistry
2021-12-10 15:34:51 +01:00
Simon Ser
f6895fed32
Add reconnect button
2021-12-07 13:39:02 +01:00
Simon Ser
f3d38859d3
Move isBouncer props to server state
...
Avoids having to pass this around.
2021-12-07 13:16:07 +01:00
Simon Ser
ab3d4dd661
Refactor ISUPPORT handling
...
Add a helper class to parse ISUPPORT tokens. Instead of having
manual ISUPPORT handling all over the place, use pre-processed
values.
2021-12-07 12:09:10 +01:00
Simon Ser
31b293fa03
lib/client: use Error objects for error events
2021-12-06 23:09:30 +01:00
Simon Ser
05f7c6e9fe
Add Client.join, show join errors in popup
2021-12-04 17:44:23 +01:00
Simon Ser
ada9ff3b71
components/buffer-header: fix missing "join" button for parted channel
2021-12-03 19:09:52 +01:00
Simon Ser
93ba0e6443
Disable debug logs in production
...
console.debug logs cause some performance issues because the browser
is forced to save the logged objects just in case the user opens the
debugging tools.
They can be force-enabled back by adding ?debug=1 to the URL.
Only console.debug is disabled, console.log and other levels are a lot
less verbose and still enabled by default.
2021-12-01 11:40:59 +01:00
Simon Ser
a1ff1be342
Mark auth dialog as loading
2021-11-30 16:05:08 +01:00
Simon Ser
47f56f06b9
Mark register/verify dialogs as loading
2021-11-30 15:49:52 +01:00
Simon Ser
1e84412172
Show "Manage network" even if upstream is disconnected
...
Fixes: 86853eb2e5
("components/buffer-header: hide action buttons when disconnected")
2021-11-30 15:29:24 +01:00
Simon Ser
451bb4c73f
Add link to verify account next to VERIFICATION_REQUIRED message
2021-11-30 15:13:34 +01:00
Simon Ser
be08302c1f
Add support for draft/account-registration
...
A new UI to register and verify accounts is added.
2021-11-30 14:59:44 +01:00
Simon Ser
c4a78283af
Linkify error messages
...
Sometimes servers will put links and channels in their error
messages. Make it easy for users to click them.
2021-11-29 13:38:07 +01:00
Simon Ser
25e69a551e
Clear channel joined field when disconnected
2021-11-29 11:44:45 +01:00
Simon Ser
86853eb2e5
components/buffer-header: hide action buttons when disconnected
2021-11-29 11:44:28 +01:00
Simon Ser
1800b6bea1
components/member-list: re-render on State.users update
2021-11-28 20:13:08 +01:00
Simon Ser
fcce340846
Dim away users in member list
...
References: https://todo.sr.ht/~emersion/gamja/13
2021-11-28 20:09:48 +01:00
Simon Ser
0d2067e33e
components/connect-form: replace auto-join text field with checkbox
...
The intent of the auto-join field is to ask the user whether they
really want to join the pre-filled channel. Users rarely want to
customize this field, they can just manually click "Join" after
connecting if they want to join another channel.
2021-11-27 12:08:23 +01:00
Simon Ser
3e309e9dfe
Ignore RPL_AWAY
2021-11-23 17:58:49 +01:00
Simon Ser
3e2ac307f6
Add post-connect UI to login via SASL
...
If the server supports SASL and if we aren't logged in with any
account, add a UI to authenticate via SASL. This allows users to
login anonymously then login via SASL.
This will also ease the draft/account-registration implementation.
2021-11-21 16:40:46 +01:00
Simon Ser
e37c2a2cec
Auto-dismiss client error on reconnect
...
References: https://todo.sr.ht/~emersion/gamja/74
2021-11-17 10:12:36 +01:00
Simon Ser
82e5a2795d
Properly handle port in irc:// URLs
2021-11-16 11:52:38 +01:00
Simon Ser
a0b250df3f
Reword ProtocolHandlerNagger message
2021-11-16 11:30:33 +01:00
Simon Ser
321140327e
Add UI to enable protocol handler
2021-11-16 11:19:25 +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
94901f1662
Request WHO info w/ empty message list in switchBuffer
2021-11-08 15:03:05 +01:00
Simon Ser
9475ffb8c6
Don't auto-join without prompting user
2021-11-08 13:01:54 +01:00
Simon Ser
f3c48a3748
Add "open" URL param
...
This can be set to an irc:// URL to open. This is useful for
bouncers.
2021-11-08 12:33:02 +01:00
Simon Ser
14031c594b
Ask confirmation before JOIN on irc:// link click
2021-11-08 10:44:10 +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
a58befd6d7
s/var/let/
2021-11-07 13:51:39 +01:00
Simon Ser
38a3075a2c
Disconnect previous server on connect re-submit
2021-11-07 13:50:26 +01:00
Simon Ser
96dd8476ad
De-duplicate nicks in folded JOIN/PART/QUIT lines
2021-11-05 15:00:08 +01:00
Simon Ser
800f5ceb6a
Keep track of channel join status
...
This makes us behave better when we receive a self-PART message
from the server.
2021-11-05 11:49:56 +01:00
Simon Ser
50f10a43dd
components/buffer: show MODE target if different from buffer name
...
This happens for user modes, for instance.
2021-11-03 21:58:26 +01:00
Simon Ser
a1ab87c71c
Route self-NICK messages to server buffer
2021-11-03 21:49:53 +01:00
Simon Ser
8ebb61cb0e
Route user MODE messages to server buffer
2021-11-03 21:44:24 +01:00
Simon Ser
8f90613951
components/buffer-header: add help text for user details
...
This makes it easier for users new to IRC to figure out what these
things mean. Additionally, it's not possible for a malicious user
to spoof the <abbr> style.
2021-11-03 17:23:32 +01:00
Simon Ser
0888af4a6f
Request more messages for event-playback infinite scrolling
...
When the server supports draft/event-playback, some messages (like
join/part/etc) may be collapsed together. Request more messages to
avoid ending up with a half-filled page.
2021-11-03 16:31:12 +01:00
Simon Ser
eec4126562
components/buffer-header: mark unauthenticated users as such
2021-11-02 18:04:53 +01:00