dkforest

A forum and chat platform (onion)
git clone https://git.dasho.dev/n0tr1v/dkforest.git
Log | Files | Refs | LICENSE

commit 81934a72df4cde0e525837c666943a3684b230cf
parent dc2e689b4c420dd2e6bfa204cd4c3703b6fd31b9
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Wed, 11 Jan 2023 16:04:22 -0800

improve rtuto UX

Diffstat:
Mpkg/web/handlers/api/v1/data.go | 1+
Mpkg/web/handlers/api/v1/handlers.go | 6++++++
Mpkg/web/public/views/pages/chat-messages.gohtml | 17+++++++++++++----
3 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/pkg/web/handlers/api/v1/data.go b/pkg/web/handlers/api/v1/data.go @@ -34,6 +34,7 @@ type chatMessagesData struct { ReadMarker database.ChatReadMarker OfficialRooms []database.ChatRoomAug SubscribedRooms []database.ChatRoomAug + ForceManualRefresh bool } func (c chatMessagesData) MarshalJSON() ([]byte, error) { diff --git a/pkg/web/handlers/api/v1/handlers.go b/pkg/web/handlers/api/v1/handlers.go @@ -121,6 +121,12 @@ func ChatMessagesHandler(c echo.Context) error { database.DB.Table("chat_read_records").Where("user_id = ? AND room_id = ?", authUser.ID, room.ID).Update("read_at", time.Now()) var data chatMessagesData + + if ((room.IsOfficialRoom() || (room.IsListed && !room.IsProtected())) && !authUser.TutorialCompleted()) && + authUser.GeneralMessagesCount > 0 { + data.ForceManualRefresh = true + } + data.ManualRefreshTimeout = authUser.RefreshRate + 25 data.DateFormat = authUser.GetDateFormat() data.IsModerator = authUser.IsModerator() diff --git a/pkg/web/public/views/pages/chat-messages.gohtml b/pkg/web/public/views/pages/chat-messages.gohtml @@ -2,7 +2,7 @@ <html lang="en"> <head> <title></title> - {{- if not .Data.PreventRefresh -}}<meta http-equiv="refresh" content="{{ .AuthUser.RefreshRate }}">{{- end -}} + {{- if and (not .Data.PreventRefresh) (not .Data.ForceManualRefresh) -}}<meta http-equiv="refresh" content="{{ .AuthUser.RefreshRate }}">{{- end -}} {{- if .AuthUser.CollectMetadata -}}<link rel="stylesheet" type="text/css" href="/public/css/meta.css?v={{ .VERSION }}" />{{- end -}} <style> /* http://meyerweb.com/eric/tools/css/reset/ @@ -106,14 +106,16 @@ } .k_btn::after { content: "k"; } #manualrefresh { + {{ if not .Data.ForceManualRefresh }} + top: -200%; + animation: timeout_messages {{ .Data.ManualRefreshTimeout }}s forwards; + {{ end }} color: #bf2718; display: block; position: fixed; text-align: center; left: calc(50% - 200px); width: 400px; - top: -200%; - animation: timeout_messages {{ .Data.ManualRefreshTimeout }}s forwards; z-index: 2; background-color: #500000; border: 2px solid #ff0000; @@ -145,7 +147,14 @@ </head> <body> - {{ if not .Data.PreventRefresh }} + {{ if .Data.ForceManualRefresh }} + <div id="manualrefresh"> + <h4>Manual refresh required1</h4> + <form method="get" action="/chat/{{ $.Data.RoomName }}" target="_top"> + <input type="submit" value="Reload" /> + </form> + </div> + {{ else if not .Data.PreventRefresh }} <div id="manualrefresh"> <h4>Manual refresh required</h4> <form method="get">