commit f5a291c3794b2157046b714ed426a3c326e9c57b
parent 776acbf39911d1bdcb35b47affa765da124b7dee
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Sat, 10 Jun 2023 02:59:42 -0700
simplify message auth
Diffstat:
3 files changed, 336 insertions(+), 367 deletions(-)
diff --git a/pkg/database/tableChatMessages.go b/pkg/database/tableChatMessages.go
@@ -184,35 +184,36 @@ func (m *ChatMessage) UserCanDelete(user User) bool {
if user.IsAdmin {
return true
}
+ // room owner can delete any messages in their room
+ if m.IsRoomOwner(user) {
+ return true
+ }
+ // User can delete PMs from user 0
+ if m.IsPmRecipient(user) && m.User.Username == config.NullUsername {
+ return true
+ }
+ // Own messages can be deleted if not too old
+ if m.UserID == user.ID {
+ return !m.TooOldToDelete()
+ }
// Moderators cannot delete vetted user messages
- if m.UserID != user.ID && m.User.Vetted {
+ if user.IsModerator() && m.User.Vetted {
return false
}
// Mod cannot delete admin
if user.IsModerator() && m.User.IsAdmin {
return false
}
- // if room owner, you can delete messages
- if m.Room.IsRoomOwner(user) {
- return true
- }
- // Mod can delete own messages
- if user.IsModerator() && m.User.IsModerator() && user.ID == m.UserID {
- return true
- }
// Mod cannot delete mod
if user.IsModerator() && m.User.IsModerator() {
return false
}
- // User can delete PMs from user 0
- if m.ToUserID != nil && *m.ToUserID == user.ID && m.User.Username == config.NullUsername {
+ // Mod can delete messages they don't own
+ if user.IsModerator() {
return true
}
- // If not a mod, you can only delete your own message
- if !user.IsModerator() && user.ID != m.UserID {
- return false
- }
- return true
+ // Cannot delete message you don't own
+ return false
}
func (m *ChatMessage) TooOldToDelete() bool {
diff --git a/pkg/web/handlers/api/v1/messages.qtpl b/pkg/web/handlers/api/v1/messages.qtpl
@@ -329,8 +329,13 @@
{%- elseif AuthUser.ID == e.User.ID && AuthUser.HighlightOwnMessages %} own-highlight{%- endif -%}
">
{%- if e.UserCanDelete(*AuthUser) -%}
- {%- if !e.TooOldToDelete() -%}
- {%- if AuthUser.DisplayDeleteButton -%}
+ {%- if AuthUser.DisplayDeleteButton -%}
+ {%- if e.TooOldToDelete() -%}
+ <form method="post" action="/api/v1/chat/messages/delete/{%s e.UUID %}" class="d-inline">
+ <input type="hidden" name="csrf" value="{%s CSRF %}" />
+ <button class="mod-btn delete_msg_btn f-orange-clr" title="delete"></button>
+ </form>
+ {%- else -%}
<form method="post" action="/api/v1/chat/messages/delete/{%s e.UUID %}" class="d-inline">
<input type="hidden" name="csrf" value="{%s CSRF %}" />
<button class="mod-btn delete_msg_btn
@@ -347,21 +352,6 @@
></button>
</form>
{%- endif -%}
- {%- elseif (AuthUser.IsModerator() && e.TooOldToDelete() && e.UserID != AuthUser.ID) || AuthUser.IsAdmin || e.IsRoomOwner(*AuthUser) -%}
- {%- if AuthUser.DisplayDeleteButton -%}
- <form method="post" action="/api/v1/chat/messages/delete/{%s e.UUID %}" class="d-inline">
- <input type="hidden" name="csrf" value="{%s CSRF %}" />
- <button class="mod-btn delete_msg_btn f-orange-clr" title="delete"></button>
- </form>
- {%- endif -%}
- {%- elseif AuthUser.IsModerator() -%}
- {%- if AuthUser.DisplayDeleteButton -%}
- <div class="spacer16"></div>
- {%- endif -%}
- {%- else -%}
- {%- if AuthUser.DisplayDeleteButton -%}
- <div class="spacer16"></div>
- {%- endif -%}
{%- endif -%}
{%- if AuthUser.IsModerator() -%}
{%- if e.UserID != AuthUser.ID -%}
diff --git a/pkg/web/handlers/api/v1/messages.qtpl.go b/pkg/web/handlers/api/v1/messages.qtpl.go
@@ -756,9 +756,9 @@ func StreamRenderMessage(qw422016 *qt422016.Writer, idx int, e database.ChatMess
//line messages.qtpl:331
if e.UserCanDelete(*AuthUser) {
//line messages.qtpl:332
- if !e.TooOldToDelete() {
+ if AuthUser.DisplayDeleteButton {
//line messages.qtpl:333
- if AuthUser.DisplayDeleteButton {
+ if e.TooOldToDelete() {
//line messages.qtpl:333
qw422016.N().S(` <form method="post" action="/api/v1/chat/messages/delete/`)
//line messages.qtpl:334
@@ -770,692 +770,670 @@ func StreamRenderMessage(qw422016 *qt422016.Writer, idx int, e database.ChatMess
qw422016.E().S(CSRF)
//line messages.qtpl:335
qw422016.N().S(`" />
+ <button class="mod-btn delete_msg_btn f-orange-clr" title="delete"></button>
+ </form>
+`)
+//line messages.qtpl:338
+ } else {
+//line messages.qtpl:338
+ qw422016.N().S(` <form method="post" action="/api/v1/chat/messages/delete/`)
+//line messages.qtpl:339
+ qw422016.E().S(e.UUID)
+//line messages.qtpl:339
+ qw422016.N().S(`" class="d-inline">
+ <input type="hidden" name="csrf" value="`)
+//line messages.qtpl:340
+ qw422016.E().S(CSRF)
+//line messages.qtpl:340
+ qw422016.N().S(`" />
<button class="mod-btn delete_msg_btn
" title="delete"
style="
`)
-//line messages.qtpl:339
+//line messages.qtpl:344
if string(e.User.Username) != NullUsername {
-//line messages.qtpl:340
+//line messages.qtpl:345
if (AuthUser.IsModerator() && e.UserID != AuthUser.ID) || AuthUser.IsAdmin || e.IsRoomOwner(*AuthUser) {
-//line messages.qtpl:340
+//line messages.qtpl:345
qw422016.N().S(` animation: `)
-//line messages.qtpl:341
+//line messages.qtpl:346
qw422016.N().DL(e.DeleteSecondsRemaining())
-//line messages.qtpl:341
+//line messages.qtpl:346
qw422016.N().S(`s 1s forwards orange_btn;
`)
-//line messages.qtpl:342
+//line messages.qtpl:347
} else {
-//line messages.qtpl:342
+//line messages.qtpl:347
qw422016.N().S(` animation: `)
-//line messages.qtpl:343
+//line messages.qtpl:348
qw422016.N().DL(e.DeleteSecondsRemaining())
-//line messages.qtpl:343
+//line messages.qtpl:348
qw422016.N().S(`s 1s forwards hide_btn;
`)
-//line messages.qtpl:344
+//line messages.qtpl:349
}
-//line messages.qtpl:345
+//line messages.qtpl:350
}
-//line messages.qtpl:345
+//line messages.qtpl:350
qw422016.N().S(` "
></button>
</form>
`)
-//line messages.qtpl:349
- }
-//line messages.qtpl:350
- } else if (AuthUser.IsModerator() && e.TooOldToDelete() && e.UserID != AuthUser.ID) || AuthUser.IsAdmin || e.IsRoomOwner(*AuthUser) {
-//line messages.qtpl:351
- if AuthUser.DisplayDeleteButton {
-//line messages.qtpl:351
- qw422016.N().S(` <form method="post" action="/api/v1/chat/messages/delete/`)
-//line messages.qtpl:352
- qw422016.E().S(e.UUID)
-//line messages.qtpl:352
- qw422016.N().S(`" class="d-inline">
- <input type="hidden" name="csrf" value="`)
-//line messages.qtpl:353
- qw422016.E().S(CSRF)
-//line messages.qtpl:353
- qw422016.N().S(`" />
- <button class="mod-btn delete_msg_btn f-orange-clr" title="delete"></button>
- </form>
-`)
-//line messages.qtpl:356
- }
-//line messages.qtpl:357
- } else if AuthUser.IsModerator() {
-//line messages.qtpl:358
- if AuthUser.DisplayDeleteButton {
-//line messages.qtpl:358
- qw422016.N().S(` <div class="spacer16"></div>
-`)
-//line messages.qtpl:360
+//line messages.qtpl:354
}
-//line messages.qtpl:361
- } else {
-//line messages.qtpl:362
- if AuthUser.DisplayDeleteButton {
-//line messages.qtpl:362
- qw422016.N().S(` <div class="spacer16"></div>
-`)
-//line messages.qtpl:364
- }
-//line messages.qtpl:365
+//line messages.qtpl:355
}
-//line messages.qtpl:366
+//line messages.qtpl:356
if AuthUser.IsModerator() {
-//line messages.qtpl:367
+//line messages.qtpl:357
if e.UserID != AuthUser.ID {
-//line messages.qtpl:368
+//line messages.qtpl:358
if AuthUser.DisplayHellbanButton {
-//line messages.qtpl:369
+//line messages.qtpl:359
if string(e.User.Username) == NullUsername {
-//line messages.qtpl:369
+//line messages.qtpl:359
qw422016.N().S(` <div class="spacer16"></div>
`)
-//line messages.qtpl:371
+//line messages.qtpl:361
} else {
-//line messages.qtpl:372
+//line messages.qtpl:362
if e.User.IsHellbanned {
-//line messages.qtpl:372
+//line messages.qtpl:362
qw422016.N().S(` <form method="post" action="/api/v1/users/`)
-//line messages.qtpl:373
+//line messages.qtpl:363
qw422016.E().S(e.UserID.String())
-//line messages.qtpl:373
+//line messages.qtpl:363
qw422016.N().S(`/unhellban" class="d-inline">
<input type="hidden" name="csrf" value="`)
-//line messages.qtpl:374
+//line messages.qtpl:364
qw422016.E().S(CSRF)
-//line messages.qtpl:374
+//line messages.qtpl:364
qw422016.N().S(`" />
<button class="mod-btn hb_btn f-orange-clr line-through" title="unhellban"></button>
</form>
`)
-//line messages.qtpl:377
+//line messages.qtpl:367
} else {
-//line messages.qtpl:377
+//line messages.qtpl:367
qw422016.N().S(` <form method="post" action="/api/v1/users/`)
-//line messages.qtpl:378
+//line messages.qtpl:368
qw422016.E().S(e.UserID.String())
-//line messages.qtpl:378
+//line messages.qtpl:368
qw422016.N().S(`/hellban" class="d-inline">
<input type="hidden" name="csrf" value="`)
-//line messages.qtpl:379
+//line messages.qtpl:369
qw422016.E().S(CSRF)
-//line messages.qtpl:379
+//line messages.qtpl:369
qw422016.N().S(`" />
<button class="mod-btn hb_btn f-orange-clr" title="hellban"></button>
</form>
`)
-//line messages.qtpl:382
+//line messages.qtpl:372
}
-//line messages.qtpl:383
+//line messages.qtpl:373
}
-//line messages.qtpl:384
+//line messages.qtpl:374
}
-//line messages.qtpl:385
+//line messages.qtpl:375
if AuthUser.DisplayKickButton {
-//line messages.qtpl:385
+//line messages.qtpl:375
qw422016.N().S(` <form method="post" action="/api/v1/users/`)
-//line messages.qtpl:386
+//line messages.qtpl:376
qw422016.E().S(e.UserID.String())
-//line messages.qtpl:386
+//line messages.qtpl:376
qw422016.N().S(`/kick" class="d-inline">
<input type="hidden" name="csrf" value="`)
-//line messages.qtpl:387
+//line messages.qtpl:377
qw422016.E().S(CSRF)
-//line messages.qtpl:387
+//line messages.qtpl:377
qw422016.N().S(`" />
<button class="mod-btn k_btn f-orange-clr" title="kick"></button>
</form>
`)
-//line messages.qtpl:390
+//line messages.qtpl:380
}
-//line messages.qtpl:391
+//line messages.qtpl:381
} else {
-//line messages.qtpl:392
+//line messages.qtpl:382
if AuthUser.DisplayKickButton && AuthUser.DisplayHellbanButton {
-//line messages.qtpl:392
+//line messages.qtpl:382
qw422016.N().S(` <div class="spacer36"></div>
`)
-//line messages.qtpl:394
+//line messages.qtpl:384
} else if AuthUser.DisplayKickButton || AuthUser.DisplayHellbanButton {
-//line messages.qtpl:394
+//line messages.qtpl:384
qw422016.N().S(` <div class="spacer16"></div>
`)
-//line messages.qtpl:396
+//line messages.qtpl:386
}
-//line messages.qtpl:397
+//line messages.qtpl:387
}
-//line messages.qtpl:398
+//line messages.qtpl:388
}
-//line messages.qtpl:399
+//line messages.qtpl:389
} else {
-//line messages.qtpl:400
+//line messages.qtpl:390
if Data.NbButtons == 3 {
-//line messages.qtpl:400
+//line messages.qtpl:390
qw422016.N().S(` <div class="spacer56"></div>
`)
-//line messages.qtpl:402
+//line messages.qtpl:392
} else if Data.NbButtons == 2 {
-//line messages.qtpl:402
+//line messages.qtpl:392
qw422016.N().S(` <div class="spacer36"></div>
`)
-//line messages.qtpl:404
+//line messages.qtpl:394
} else if Data.NbButtons == 1 {
-//line messages.qtpl:404
+//line messages.qtpl:394
qw422016.N().S(` <div class="spacer16"></div>
`)
-//line messages.qtpl:406
+//line messages.qtpl:396
}
-//line messages.qtpl:407
+//line messages.qtpl:397
}
-//line messages.qtpl:408
+//line messages.qtpl:398
if AuthUser.GetDateFormat() != "" {
-//line messages.qtpl:408
+//line messages.qtpl:398
qw422016.N().S(` <a href="`)
-//line messages.qtpl:409
+//line messages.qtpl:399
qw422016.E().S(baseTopBarURL)
-//line messages.qtpl:409
+//line messages.qtpl:399
qw422016.N().S(`?quote=`)
-//line messages.qtpl:409
+//line messages.qtpl:399
qw422016.E().S(e.UUID)
-//line messages.qtpl:409
+//line messages.qtpl:399
streamunesc(qw422016, Data.TopBarQueryParams)
-//line messages.qtpl:409
+//line messages.qtpl:399
qw422016.N().S(`" target="iframe1" class="date date-link" title="`)
-//line messages.qtpl:409
+//line messages.qtpl:399
qw422016.E().S(e.CreatedAt.Format("01-02 15:04:05"))
-//line messages.qtpl:409
+//line messages.qtpl:399
if *isFirstMsg {
-//line messages.qtpl:409
+//line messages.qtpl:399
qw422016.N().S(` (`)
-//line messages.qtpl:409
+//line messages.qtpl:399
qw422016.E().S(humanize.Time(e.CreatedAt))
-//line messages.qtpl:409
+//line messages.qtpl:399
qw422016.N().S(`)`)
-//line messages.qtpl:409
+//line messages.qtpl:399
}
-//line messages.qtpl:409
+//line messages.qtpl:399
qw422016.N().S(`">`)
-//line messages.qtpl:409
+//line messages.qtpl:399
qw422016.E().S(e.CreatedAt.Format(AuthUser.GetDateFormat()))
-//line messages.qtpl:409
+//line messages.qtpl:399
qw422016.N().S(`</a>
`)
-//line messages.qtpl:410
+//line messages.qtpl:400
*isFirstMsg = false
-//line messages.qtpl:410
+//line messages.qtpl:400
qw422016.N().S(`
`)
-//line messages.qtpl:411
+//line messages.qtpl:401
}
-//line messages.qtpl:411
+//line messages.qtpl:401
qw422016.N().S(` <a href="/u/`)
-//line messages.qtpl:412
+//line messages.qtpl:402
qw422016.E().S(string(e.GetProfile(AuthUser)))
-//line messages.qtpl:412
+//line messages.qtpl:402
qw422016.N().S(`" target="_blank" class="f-def-clr">-</a>
`)
-//line messages.qtpl:413
+//line messages.qtpl:403
if e.System {
-//line messages.qtpl:413
+//line messages.qtpl:403
qw422016.N().S(` <span class="sysmsg">`)
-//line messages.qtpl:414
+//line messages.qtpl:404
streamunesc(qw422016, e.Message)
-//line messages.qtpl:414
+//line messages.qtpl:404
qw422016.N().S(`</span>
`)
-//line messages.qtpl:415
+//line messages.qtpl:405
} else {
-//line messages.qtpl:416
+//line messages.qtpl:406
if e.Moderators {
-//line messages.qtpl:416
+//line messages.qtpl:406
qw422016.N().S(`<span class="sysmsg">[<a href="`)
-//line messages.qtpl:416
+//line messages.qtpl:406
qw422016.E().S(baseTopBarURL)
-//line messages.qtpl:416
+//line messages.qtpl:406
qw422016.N().S(`?m=1`)
-//line messages.qtpl:416
+//line messages.qtpl:406
streamunesc(qw422016, Data.TopBarQueryParams)
-//line messages.qtpl:416
+//line messages.qtpl:406
qw422016.N().S(`" target="iframe1" class="sysmsg f-white-clr">M</a>]</span> `)
-//line messages.qtpl:416
+//line messages.qtpl:406
}
-//line messages.qtpl:417
+//line messages.qtpl:407
if e.GroupID != nil {
-//line messages.qtpl:417
+//line messages.qtpl:407
qw422016.N().S(`<span class="sysmsg">[<a href="`)
-//line messages.qtpl:417
+//line messages.qtpl:407
qw422016.E().S(baseTopBarURL)
-//line messages.qtpl:417
+//line messages.qtpl:407
qw422016.N().S(`?g=`)
-//line messages.qtpl:417
+//line messages.qtpl:407
qw422016.E().S(e.Group.Name)
-//line messages.qtpl:417
+//line messages.qtpl:407
streamunesc(qw422016, Data.TopBarQueryParams)
-//line messages.qtpl:417
+//line messages.qtpl:407
qw422016.N().S(`" target="iframe1" class="sysmsg f-white-clr">`)
-//line messages.qtpl:417
+//line messages.qtpl:407
qw422016.E().S(e.Group.Name)
-//line messages.qtpl:417
+//line messages.qtpl:407
qw422016.N().S(`</a>]</span> `)
-//line messages.qtpl:417
+//line messages.qtpl:407
}
-//line messages.qtpl:418
+//line messages.qtpl:408
if e.ToUserID != nil {
-//line messages.qtpl:418
+//line messages.qtpl:408
qw422016.N().S(` [`)
-//line messages.qtpl:419
+//line messages.qtpl:409
streamfromUsername(qw422016, AuthUser, Data, e, baseTopBarURL)
-//line messages.qtpl:419
+//line messages.qtpl:409
qw422016.N().S(` →
`)
-//line messages.qtpl:421
+//line messages.qtpl:411
if e.ToUser.ID == AuthUser.ID {
-//line messages.qtpl:421
+//line messages.qtpl:411
qw422016.N().S(`<span `)
-//line messages.qtpl:421
+//line messages.qtpl:411
streamunesc(qw422016, e.ToUser.GenerateChatStyle())
-//line messages.qtpl:421
+//line messages.qtpl:411
qw422016.N().S(`>`)
-//line messages.qtpl:421
+//line messages.qtpl:411
qw422016.E().S(string(e.ToUser.Username))
-//line messages.qtpl:421
+//line messages.qtpl:411
qw422016.N().S(`</span>`)
-//line messages.qtpl:421
+//line messages.qtpl:411
} else {
-//line messages.qtpl:421
+//line messages.qtpl:411
qw422016.N().S(`<a `)
-//line messages.qtpl:421
+//line messages.qtpl:411
streamunesc(qw422016, e.ToUser.GenerateChatStyle())
-//line messages.qtpl:421
+//line messages.qtpl:411
qw422016.N().S(` href="`)
-//line messages.qtpl:421
+//line messages.qtpl:411
qw422016.E().S(baseTopBarURL)
-//line messages.qtpl:421
+//line messages.qtpl:411
qw422016.N().S(`?pm=`)
-//line messages.qtpl:421
+//line messages.qtpl:411
qw422016.E().S(string(e.ToUser.Username))
-//line messages.qtpl:421
+//line messages.qtpl:411
qw422016.E().S(Data.TopBarQueryParams)
-//line messages.qtpl:421
+//line messages.qtpl:411
qw422016.N().S(`" target="iframe1">`)
-//line messages.qtpl:421
+//line messages.qtpl:411
qw422016.E().S(string(e.ToUser.Username))
-//line messages.qtpl:421
+//line messages.qtpl:411
qw422016.N().S(`</a>`)
-//line messages.qtpl:421
+//line messages.qtpl:411
}
-//line messages.qtpl:421
+//line messages.qtpl:411
qw422016.N().S(`] -
`)
-//line messages.qtpl:422
+//line messages.qtpl:412
} else {
-//line messages.qtpl:423
+//line messages.qtpl:413
streamfromUsername(qw422016, AuthUser, Data, e, baseTopBarURL)
-//line messages.qtpl:424
+//line messages.qtpl:414
if !e.IsMe() {
-//line messages.qtpl:425
+//line messages.qtpl:415
if AuthUser.CanSeeHB() && (e.IsHellbanned || e.User.IsHellbanned) && (e.ToUserID == nil) {
-//line messages.qtpl:425
+//line messages.qtpl:415
qw422016.N().S(` <a href="`)
-//line messages.qtpl:426
+//line messages.qtpl:416
qw422016.E().S(baseTopBarURL)
-//line messages.qtpl:426
+//line messages.qtpl:416
qw422016.N().S(`?hbm=1`)
-//line messages.qtpl:426
+//line messages.qtpl:416
streamunesc(qw422016, Data.TopBarQueryParams)
-//line messages.qtpl:426
+//line messages.qtpl:416
qw422016.N().S(`" target="iframe1" class="f-def-clr">-</a>
`)
-//line messages.qtpl:427
+//line messages.qtpl:417
} else {
-//line messages.qtpl:427
+//line messages.qtpl:417
qw422016.N().S(` -
`)
-//line messages.qtpl:429
+//line messages.qtpl:419
}
-//line messages.qtpl:430
+//line messages.qtpl:420
}
-//line messages.qtpl:431
+//line messages.qtpl:421
}
-//line messages.qtpl:431
+//line messages.qtpl:421
qw422016.N().S(` <span `)
-//line messages.qtpl:432
+//line messages.qtpl:422
streamunesc(qw422016, e.User.GenerateChatStyle())
-//line messages.qtpl:432
+//line messages.qtpl:422
qw422016.N().S(`><span class="o-wrap">`)
-//line messages.qtpl:432
+//line messages.qtpl:422
qw422016.N().S(unesc(e.MsgToDisplay()))
-//line messages.qtpl:432
+//line messages.qtpl:422
qw422016.N().S(`</span></span>
`)
-//line messages.qtpl:433
+//line messages.qtpl:423
}
-//line messages.qtpl:433
+//line messages.qtpl:423
qw422016.N().S(` </div>
`)
-//line messages.qtpl:435
+//line messages.qtpl:425
}
-//line messages.qtpl:436
+//line messages.qtpl:426
}
-//line messages.qtpl:436
+//line messages.qtpl:426
func WriteRenderMessage(qq422016 qtio422016.Writer, idx int, e database.ChatMessage, AuthUser *database.User,
Data ChatMessagesData, baseTopBarURL string, readMarkerRendered, isFirstMsg *bool, CSRF, NullUsername string) {
-//line messages.qtpl:436
+//line messages.qtpl:426
qw422016 := qt422016.AcquireWriter(qq422016)
-//line messages.qtpl:436
+//line messages.qtpl:426
StreamRenderMessage(qw422016, idx, e, AuthUser, Data, baseTopBarURL, readMarkerRendered, isFirstMsg, CSRF, NullUsername)
-//line messages.qtpl:436
+//line messages.qtpl:426
qt422016.ReleaseWriter(qw422016)
-//line messages.qtpl:436
+//line messages.qtpl:426
}
-//line messages.qtpl:436
+//line messages.qtpl:426
func RenderMessage(idx int, e database.ChatMessage, AuthUser *database.User,
Data ChatMessagesData, baseTopBarURL string, readMarkerRendered, isFirstMsg *bool, CSRF, NullUsername string) string {
-//line messages.qtpl:436
+//line messages.qtpl:426
qb422016 := qt422016.AcquireByteBuffer()
-//line messages.qtpl:436
+//line messages.qtpl:426
WriteRenderMessage(qb422016, idx, e, AuthUser, Data, baseTopBarURL, readMarkerRendered, isFirstMsg, CSRF, NullUsername)
-//line messages.qtpl:436
+//line messages.qtpl:426
qs422016 := string(qb422016.B)
-//line messages.qtpl:436
+//line messages.qtpl:426
qt422016.ReleaseByteBuffer(qb422016)
-//line messages.qtpl:436
+//line messages.qtpl:426
return qs422016
-//line messages.qtpl:436
+//line messages.qtpl:426
}
-//line messages.qtpl:439
+//line messages.qtpl:429
func StreamMember(qw422016 *qt422016.Writer, AuthUser *database.User, Data ChatMenuData, El managers.UserInfo) {
-//line messages.qtpl:439
+//line messages.qtpl:429
qw422016.N().S(`
`)
-//line messages.qtpl:440
+//line messages.qtpl:430
baseTopBarURL := "/api/v1/chat/top-bar/" + Data.RoomName
-//line messages.qtpl:441
+//line messages.qtpl:431
if El.Username == AuthUser.Username {
-//line messages.qtpl:441
+//line messages.qtpl:431
qw422016.N().S(` <div>
<span style="color: `)
-//line messages.qtpl:443
+//line messages.qtpl:433
qw422016.E().S(El.Color)
-//line messages.qtpl:443
+//line messages.qtpl:433
qw422016.N().S(`;">`)
-//line messages.qtpl:443
+//line messages.qtpl:433
qw422016.E().S(string(El.Username))
-//line messages.qtpl:443
+//line messages.qtpl:433
qw422016.N().S(`</span>
`)
-//line messages.qtpl:444
+//line messages.qtpl:434
if El.AfkIndicatorEnabled {
-//line messages.qtpl:444
+//line messages.qtpl:434
qw422016.N().S(` <small class="afk-indicator">afk</small>
`)
-//line messages.qtpl:446
+//line messages.qtpl:436
}
-//line messages.qtpl:446
+//line messages.qtpl:436
qw422016.N().S(` </div>
`)
-//line messages.qtpl:448
+//line messages.qtpl:438
} else {
-//line messages.qtpl:449
+//line messages.qtpl:439
if !El.IsHellbanned || AuthUser.ID == El.UserID || (El.IsHellbanned && AuthUser.IsHellbanned) || AuthUser.DisplayHellbanned {
-//line messages.qtpl:449
+//line messages.qtpl:439
qw422016.N().S(` <div>
`)
-//line messages.qtpl:451
+//line messages.qtpl:441
tagType := "tag"
-//line messages.qtpl:452
+//line messages.qtpl:442
if AuthUser.CanSeeHB() && El.IsHellbanned {
-//line messages.qtpl:453
+//line messages.qtpl:443
tagType = "htag"
-//line messages.qtpl:454
+//line messages.qtpl:444
}
-//line messages.qtpl:455
+//line messages.qtpl:445
qw422016.N().S(`<a href="`)
-//line messages.qtpl:456
+//line messages.qtpl:446
qw422016.E().S(baseTopBarURL)
-//line messages.qtpl:456
+//line messages.qtpl:446
qw422016.N().S(`?`)
-//line messages.qtpl:456
+//line messages.qtpl:446
qw422016.E().S(tagType)
-//line messages.qtpl:456
+//line messages.qtpl:446
qw422016.N().S(`=`)
-//line messages.qtpl:456
+//line messages.qtpl:446
qw422016.E().S(string(El.Username))
-//line messages.qtpl:456
+//line messages.qtpl:446
streamunesc(qw422016, Data.TopBarQueryParams)
-//line messages.qtpl:456
+//line messages.qtpl:446
qw422016.N().S(`"target="iframe1"`)
-//line messages.qtpl:458
+//line messages.qtpl:448
if El.IsHellbanned && AuthUser.DisplayHellbanned {
-//line messages.qtpl:458
+//line messages.qtpl:448
qw422016.N().S(`class="hb-row"`)
-//line messages.qtpl:458
+//line messages.qtpl:448
}
-//line messages.qtpl:458
+//line messages.qtpl:448
qw422016.N().S(`style="color:`)
-//line messages.qtpl:459
+//line messages.qtpl:449
qw422016.E().S(El.Color)
-//line messages.qtpl:459
+//line messages.qtpl:449
qw422016.N().S(`;">`)
-//line messages.qtpl:459
+//line messages.qtpl:449
qw422016.E().S(string(El.Username[0]))
-//line messages.qtpl:459
+//line messages.qtpl:449
qw422016.N().S(`</a><a href="`)
-//line messages.qtpl:460
+//line messages.qtpl:450
qw422016.E().S(baseTopBarURL)
-//line messages.qtpl:460
+//line messages.qtpl:450
qw422016.N().S(`?pm=`)
-//line messages.qtpl:460
+//line messages.qtpl:450
qw422016.E().S(string(El.Username))
-//line messages.qtpl:460
+//line messages.qtpl:450
streamunesc(qw422016, Data.TopBarQueryParams)
-//line messages.qtpl:460
+//line messages.qtpl:450
qw422016.N().S(`"target="iframe1"`)
-//line messages.qtpl:462
+//line messages.qtpl:452
if El.IsHellbanned && AuthUser.DisplayHellbanned {
-//line messages.qtpl:462
+//line messages.qtpl:452
qw422016.N().S(`class="hb-row"`)
-//line messages.qtpl:462
+//line messages.qtpl:452
}
-//line messages.qtpl:462
+//line messages.qtpl:452
qw422016.N().S(`style="color:`)
-//line messages.qtpl:463
+//line messages.qtpl:453
qw422016.E().S(El.Color)
-//line messages.qtpl:463
+//line messages.qtpl:453
qw422016.N().S(`;">`)
-//line messages.qtpl:463
+//line messages.qtpl:453
qw422016.E().S(string(El.Username[1 : len(El.Username)-1]))
-//line messages.qtpl:463
+//line messages.qtpl:453
qw422016.N().S(`</a><a href="/u/`)
-//line messages.qtpl:464
+//line messages.qtpl:454
qw422016.E().S(string(El.Username))
-//line messages.qtpl:464
+//line messages.qtpl:454
qw422016.N().S(`"rel="noopener noreferrer" target="_blank"`)
-//line messages.qtpl:466
+//line messages.qtpl:456
if El.IsHellbanned && AuthUser.DisplayHellbanned {
-//line messages.qtpl:466
+//line messages.qtpl:456
qw422016.N().S(`class="hb-row"`)
-//line messages.qtpl:466
+//line messages.qtpl:456
}
-//line messages.qtpl:466
+//line messages.qtpl:456
qw422016.N().S(`style="color:`)
-//line messages.qtpl:467
+//line messages.qtpl:457
qw422016.E().S(El.Color)
-//line messages.qtpl:467
+//line messages.qtpl:457
qw422016.N().S(`;">`)
-//line messages.qtpl:467
+//line messages.qtpl:457
qw422016.E().S(string(El.Username[len(El.Username)-1]))
-//line messages.qtpl:467
+//line messages.qtpl:457
qw422016.N().S(`</a>`)
-//line messages.qtpl:469
+//line messages.qtpl:459
if El.AfkIndicatorEnabled {
-//line messages.qtpl:469
+//line messages.qtpl:459
qw422016.N().S(` <small class="afk-indicator">afk</small>
`)
-//line messages.qtpl:471
+//line messages.qtpl:461
}
-//line messages.qtpl:471
+//line messages.qtpl:461
qw422016.N().S(` </div>
`)
-//line messages.qtpl:473
+//line messages.qtpl:463
}
-//line messages.qtpl:474
+//line messages.qtpl:464
}
-//line messages.qtpl:475
+//line messages.qtpl:465
}
-//line messages.qtpl:475
+//line messages.qtpl:465
func WriteMember(qq422016 qtio422016.Writer, AuthUser *database.User, Data ChatMenuData, El managers.UserInfo) {
-//line messages.qtpl:475
+//line messages.qtpl:465
qw422016 := qt422016.AcquireWriter(qq422016)
-//line messages.qtpl:475
+//line messages.qtpl:465
StreamMember(qw422016, AuthUser, Data, El)
-//line messages.qtpl:475
+//line messages.qtpl:465
qt422016.ReleaseWriter(qw422016)
-//line messages.qtpl:475
+//line messages.qtpl:465
}
-//line messages.qtpl:475
+//line messages.qtpl:465
func Member(AuthUser *database.User, Data ChatMenuData, El managers.UserInfo) string {
-//line messages.qtpl:475
+//line messages.qtpl:465
qb422016 := qt422016.AcquireByteBuffer()
-//line messages.qtpl:475
+//line messages.qtpl:465
WriteMember(qb422016, AuthUser, Data, El)
-//line messages.qtpl:475
+//line messages.qtpl:465
qs422016 := string(qb422016.B)
-//line messages.qtpl:475
+//line messages.qtpl:465
qt422016.ReleaseByteBuffer(qb422016)
-//line messages.qtpl:475
+//line messages.qtpl:465
return qs422016
-//line messages.qtpl:475
+//line messages.qtpl:465
}
-//line messages.qtpl:478
+//line messages.qtpl:468
func streamfromUsername(qw422016 *qt422016.Writer, AuthUser *database.User, Data ChatMessagesData, El database.ChatMessage, baseTopBarURL string) {
-//line messages.qtpl:479
+//line messages.qtpl:469
tagType := "tag"
-//line messages.qtpl:480
+//line messages.qtpl:470
if El.ToUserID != nil {
-//line messages.qtpl:481
+//line messages.qtpl:471
tagType = "pm"
-//line messages.qtpl:482
+//line messages.qtpl:472
} else if AuthUser.CanSeeHB() && (El.IsHellbanned || El.User.IsHellbanned) {
-//line messages.qtpl:483
+//line messages.qtpl:473
tagType = "htag"
-//line messages.qtpl:484
+//line messages.qtpl:474
} else if AuthUser.IsModerator() && El.Moderators {
-//line messages.qtpl:485
+//line messages.qtpl:475
tagType = "mtag"
-//line messages.qtpl:486
+//line messages.qtpl:476
}
-//line messages.qtpl:487
+//line messages.qtpl:477
if El.User.ID == AuthUser.ID {
-//line messages.qtpl:488
+//line messages.qtpl:478
if El.CanBeEdited() {
-//line messages.qtpl:488
+//line messages.qtpl:478
qw422016.N().S(`<a `)
-//line messages.qtpl:488
+//line messages.qtpl:478
streamunesc(qw422016, El.User.GenerateChatStyle())
-//line messages.qtpl:488
+//line messages.qtpl:478
qw422016.N().S(` href="`)
-//line messages.qtpl:488
+//line messages.qtpl:478
qw422016.E().S(baseTopBarURL)
-//line messages.qtpl:488
+//line messages.qtpl:478
qw422016.N().S(`?e=`)
-//line messages.qtpl:488
+//line messages.qtpl:478
qw422016.E().S(El.CreatedAt.Format("15:04:05"))
-//line messages.qtpl:488
+//line messages.qtpl:478
streamunesc(qw422016, Data.TopBarQueryParams)
-//line messages.qtpl:488
+//line messages.qtpl:478
qw422016.N().S(`" target="iframe1">`)
-//line messages.qtpl:488
+//line messages.qtpl:478
qw422016.E().S(string(El.User.Username))
-//line messages.qtpl:488
+//line messages.qtpl:478
qw422016.N().S(`</a>`)
-//line messages.qtpl:488
+//line messages.qtpl:478
} else {
-//line messages.qtpl:488
+//line messages.qtpl:478
qw422016.N().S(`<span `)
-//line messages.qtpl:488
+//line messages.qtpl:478
streamunesc(qw422016, El.User.GenerateChatStyle())
-//line messages.qtpl:488
+//line messages.qtpl:478
qw422016.N().S(`>`)
-//line messages.qtpl:488
+//line messages.qtpl:478
qw422016.E().S(string(El.User.Username))
-//line messages.qtpl:488
+//line messages.qtpl:478
qw422016.N().S(`</span>`)
-//line messages.qtpl:488
+//line messages.qtpl:478
}
-//line messages.qtpl:489
+//line messages.qtpl:479
} else {
-//line messages.qtpl:489
+//line messages.qtpl:479
qw422016.N().S(`<a `)
-//line messages.qtpl:489
+//line messages.qtpl:479
streamunesc(qw422016, El.User.GenerateChatStyle())
-//line messages.qtpl:489
+//line messages.qtpl:479
qw422016.N().S(` href="`)
-//line messages.qtpl:489
+//line messages.qtpl:479
qw422016.E().S(baseTopBarURL)
-//line messages.qtpl:489
+//line messages.qtpl:479
qw422016.N().S(`?`)
-//line messages.qtpl:489
+//line messages.qtpl:479
qw422016.E().S(tagType)
-//line messages.qtpl:489
+//line messages.qtpl:479
qw422016.N().S(`=`)
-//line messages.qtpl:489
+//line messages.qtpl:479
qw422016.E().S(string(El.User.Username))
-//line messages.qtpl:489
+//line messages.qtpl:479
streamunesc(qw422016, Data.TopBarQueryParams)
-//line messages.qtpl:489
+//line messages.qtpl:479
qw422016.N().S(`" target="iframe1">`)
-//line messages.qtpl:489
+//line messages.qtpl:479
qw422016.E().S(string(El.User.Username))
-//line messages.qtpl:489
+//line messages.qtpl:479
qw422016.N().S(`</a>`)
-//line messages.qtpl:489
+//line messages.qtpl:479
}
-//line messages.qtpl:490
+//line messages.qtpl:480
}
-//line messages.qtpl:490
+//line messages.qtpl:480
func writefromUsername(qq422016 qtio422016.Writer, AuthUser *database.User, Data ChatMessagesData, El database.ChatMessage, baseTopBarURL string) {
-//line messages.qtpl:490
+//line messages.qtpl:480
qw422016 := qt422016.AcquireWriter(qq422016)
-//line messages.qtpl:490
+//line messages.qtpl:480
streamfromUsername(qw422016, AuthUser, Data, El, baseTopBarURL)
-//line messages.qtpl:490
+//line messages.qtpl:480
qt422016.ReleaseWriter(qw422016)
-//line messages.qtpl:490
+//line messages.qtpl:480
}
-//line messages.qtpl:490
+//line messages.qtpl:480
func fromUsername(AuthUser *database.User, Data ChatMessagesData, El database.ChatMessage, baseTopBarURL string) string {
-//line messages.qtpl:490
+//line messages.qtpl:480
qb422016 := qt422016.AcquireByteBuffer()
-//line messages.qtpl:490
+//line messages.qtpl:480
writefromUsername(qb422016, AuthUser, Data, El, baseTopBarURL)
-//line messages.qtpl:490
+//line messages.qtpl:480
qs422016 := string(qb422016.B)
-//line messages.qtpl:490
+//line messages.qtpl:480
qt422016.ReleaseByteBuffer(qb422016)
-//line messages.qtpl:490
+//line messages.qtpl:480
return qs422016
-//line messages.qtpl:490
+//line messages.qtpl:480
}