Commit Graph

78 Commits

Author SHA1 Message Date
Zorchenhimer 7dff29b152 Add user badges
Add badges for admins and mods.  Admins get a red badge, and mods get a
green one.

Normal users do not get a badge.
2019-03-16 18:11:27 -04:00
joeyak 1b8dd76a45 Add help button 2019-03-16 17:59:10 -04:00
joeyak ff1590d972 Added command buttons section
closes #39
2019-03-16 17:57:58 -04:00
Zorchenhimer d984269407 Add mod notice to /modpass command 2019-03-16 16:59:12 -04:00
Zorchenhimer 224fdd96c8 Don't use different port for websocket
Use the same port for the websocket that is being used for everything
else.
2019-03-16 16:53:22 -04:00
Zorchenhimer 7de20f6145 Allow unmodding yourself if you give your name
Don't deny unmodding yourself if you also provide your name to the
/unmod command.
2019-03-16 16:49:02 -04:00
Zorchenhimer 01219fffa1 Fix help popup
Properly call the open() function in the web assembly to open a new
popup.
2019-03-16 16:40:39 -04:00
Zorchenhimer d0cd90e7af Properly implement the help popup
Move the help html to a template and populate the lists dynamically.
This also splits out the base HTML stuff (eg, the <html> and <body>
tags) to a base template file.
2019-03-16 16:15:55 -04:00
joeyak c4507cc496 Ignore those evil backspaces 2019-03-16 16:01:54 -04:00
joeyak 30d480d878 Change heartbeat to be send only when in chat 2019-03-16 15:47:48 -04:00
joeyak b38542333a Add a debug message to print values 2019-03-16 14:59:30 -04:00
Zorchenhimer e94ceda655 Fix the command response
Respond to commands with the output of the command, not the command
received.  Also, don't use the server message formatting.
2019-03-16 14:37:34 -04:00
joeyak f9fa44ea77 Add enter for keys to autocomplete name 2019-03-16 14:27:13 -04:00
Zorchenhimer 80be38128f Wasm client pings the server every second
This prevents disconnects when the server is behind Nignx.  Resolves
#35.
2019-03-16 14:12:25 -04:00
Zorchenhimer 75946b600b Move clients mutex lock in ChatRoom.Broadcast()
Don't lock the clients map while sleeping in ChatRoom.Broadcast().
2019-03-16 14:09:58 -04:00
Zorchenhimer f18b790c4d Wrap connection reads and writes with a mutex
Wrapping the connection with a mutex prevents the "concurrent write to
websocket connection" panic.  The new functions are ReadData() and
WriteData so as to not collide with ReadJSON() and WriteJSON().
2019-03-16 13:44:18 -04:00
Zorchenhimer 5986b6d663 Move fmt before vet in Makefile 2019-03-16 13:42:17 -04:00
Zorchenhimer c8d39f7e4c Update readme to remove some incorrect info
The "download for development" section was wrong.  Removed until I
figure it out, lol.
2019-03-16 12:47:14 -04:00
joeyak ad4186a279 Added completion on tab for autocompleting name
closes  #7
2019-03-16 11:56:43 -04:00
joeyak 57e1f3863a Added popup box and arrow controls
When typing @ a div will show up with all the chat names that match.
When up or down arrow keys are pressed, the highlight changes.
Tab handling is currently incomplete but the event is prevented.

issue #7
2019-03-16 11:40:39 -04:00
joeyak 7297e01ab5 Add hack css font 2019-03-16 10:10:00 -04:00
joeyak bc90744798 Move broadcast logic to be self contained in the function 2019-03-15 18:57:50 -04:00
joeyak a3d3c170c9 Add more information to error output 2019-03-15 18:57:12 -04:00
joeyak a717c6ef38 Converting from conn.WriteMessage to conn.WriteJson
This takes away some of the work on the developers side to worry about parsing the object as a json string.
Backend work for issue #7
2019-03-15 17:28:29 -04:00
Zorchenhimer 28d43a726a Add Mod notice messages
These messages are only sent to mods and admins for certain events:
- User gains mod/admin privileges
- User attempts to gain mod/admin privileges unsuccessfully
- Mod/Admin uses the /sv command
- Mod/Admin uses the /playing command
- Mod unmods themselves
- Mod/Admin mods/unmods a user
- Mod/Admin uses the /reloademotes command
- Mod/Admin uses the /reloadplayer command

A separate message queue is used for these messages, and they are only
sent to clients that are either a mod or an admin.  They are sent
with the same call to ChatRoom.Broadcast(), but after all the normal
messages are sent.

Resolves #3
2019-03-15 16:03:31 -04:00
joeyak 678ccab95c Add some backend infrastructure
The server can now send the client objects with data for the client to process.
issue #7
2019-03-15 02:19:16 -04:00
joeyak 5554780438 More cleanup and organizing of code to ease with readability
move encode funcs to be with structs
moved constants to a separate file
2019-03-14 23:13:42 -04:00
joeyak 7ce14819e8 moved funcs to be with corresponding structs 2019-03-14 23:08:22 -04:00
joeyak 60dd98a1e7 Add infrastructure for the client to send formatted data to the server 2019-03-14 15:21:53 -04:00
joeyak 6a2cb3f906 Fix some linting errors with error messages 2019-03-14 15:19:36 -04:00
joeyak bb0c3ea736 Fixed printing the combined commands 2019-03-14 15:09:55 -04:00
Zorchenhimer 653ff6fc9c Some performance tweaks to the wasm code
Removed two fmt.Sprintf() calls and a fmt.Printf() call.  The Printf()
was for debugging and isn't needed anymore.  Sprintf() apparently
isn't all that performant.
2019-03-14 10:12:21 -04:00
Zorchenhimer 0effbf49b5 Rewrite ChatRoom.Broadcast()
The broadcast code would lock up eventually after a lot of messages.
It was rewritten to simplify and make it a bit more robust.  Chat
should no longer seize up for individual chatters or the entire room
after a lot of messages.
2019-03-14 10:11:14 -04:00
joeyak fc126d599e Fix broken multi alias commands
fixes #25
2019-03-14 00:21:41 -04:00
joeyak 2ef3684c14 Some linting fixes for the common package 2019-03-13 21:24:14 -04:00
joeyak 654d321a91 Remove testing print statements 2019-03-13 21:15:02 -04:00
joeyak 18465c61f5 Make the chatroom send each message individually
closes #24
2019-03-13 21:14:43 -04:00
Zorchenhimer 1cd490b04a Add single-use mod passwords
Single-use moderator passwords can only be generated by an admin with
the /modpass command.  To redeem the password and gain moderator
privileges, a user just needs to call /auth with the password.

The passwords are generated using the same function as the admin
password.  Additionally, generating passwords now uses crypto/rand
instead of math/rand.

Resolves #15
2019-03-13 16:51:07 -04:00
joeyak 5516313c79 Allow chat to be sent before the name is sent to the server
closes #17
2019-03-13 16:47:19 -04:00
joeyak fcb966dda6 Update example settings file 2019-03-13 15:28:34 -04:00
joeyak d83d5225c8 Remove the log function which is no longer needed 2019-03-13 15:28:21 -04:00
Zorchenhimer 2517aebe92 Break long words across lines in chat 2019-03-13 15:11:04 -04:00
Zorchenhimer 447768f8dc Fix setPlaying() not clearing
Some div's were moved and renamed, but this function wasn't updated.
2019-03-13 14:56:33 -04:00
Zorchenhimer 4025622415 Wrap message lines in <div> blocks
This was changed in master, but was overwritten in the merge (html
generation moved).
2019-03-13 14:10:45 -04:00
Zorchenhimer a555e626af Merge branch 'json-communication'
# Conflicts:
#	chatclient.go
#	chatroom.go
2019-03-13 14:00:13 -04:00
Zorchenhimer bdd4e71261 Flesh out the JSON stuff a bit more
Implement some commands in the wasm client code:
  - /playing (setting and clearing)
  - /refreshplayer
Commands not yet implemented:
  - /purge (command doesn't exist yet on server)
  - /help (doesn't open window)
2019-03-13 13:42:38 -04:00
Zorchenhimer 568344a794 Fix /playing when one argument (title) is provided
If /playing was called with a single word (one-word title), it would
clear the title instead of setting the title.
2019-03-13 13:34:26 -04:00
Zorchenhimer 9c80269943 Start convert to JSON data b/t client and server
Chat and events should work.  Commands do not work yet.  Everything
also needs to be tested and cleaned up a bunch more.
2019-03-13 01:09:24 -04:00
joeyak d16839c597 Changed format tool from gofmt to goimports 2019-03-13 00:25:03 -04:00
joeyak d77078edc3 divs in #messages are removed after set count maxes out. Default is 300
closes #20
2019-03-13 00:02:36 -04:00