commit ec58449486e9d2a128d6f3e9cce304d9199f1b49
parent 8a55bde4dd8d44bbe52fdd2939f9614174b66d2c
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Sat, 1 Jul 2023 00:47:51 -0700
magic no refresh delete msg button
Diffstat:
4 files changed, 333 insertions(+), 339 deletions(-)
diff --git a/pkg/web/handlers/api/v1/handlers.go b/pkg/web/handlers/api/v1/handlers.go
@@ -388,6 +388,9 @@ func ChatDeleteMessageHandler(c echo.Context) error {
logrus.Error(err)
}
+ if c.Request().Method == http.MethodGet {
+ return c.NoContent(http.StatusOK)
+ }
return hutils.RedirectReferer(c)
}
diff --git a/pkg/web/handlers/api/v1/messages.qtpl b/pkg/web/handlers/api/v1/messages.qtpl
@@ -336,27 +336,21 @@
{%- if e.UserCanDelete(*AuthUser) -%}
{%- 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>
+ <button id="btn_delete_{%s e.UUID %}" class="mod-btn delete_msg_btn f-orange-clr" title="delete"></button>
{%- 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
- " title="delete"
- style="
- {%- if string(e.User.Username) != NullUsername -%}
- {%- if (AuthUser.IsModerator() && e.UserID != AuthUser.ID) || AuthUser.IsAdmin || e.IsRoomOwner(*AuthUser) -%}
- animation: {%dl e.DeleteSecondsRemaining() %}s 1s forwards orange_btn;
- {%- else -%}
- animation: {%dl e.DeleteSecondsRemaining() %}s 1s forwards hide_btn;
- {%- endif -%}
+ <button id="btn_delete_{%s e.UUID %}" class="mod-btn delete_msg_btn" title="delete"
+ style="
+ {%- if string(e.User.Username) != NullUsername -%}
+ {%- if (AuthUser.IsModerator() && e.UserID != AuthUser.ID) || AuthUser.IsAdmin || e.IsRoomOwner(*AuthUser) -%}
+ animation: {%dl e.DeleteSecondsRemaining() %}s 1s forwards orange_btn;
+ {%- else -%}
+ animation: {%dl e.DeleteSecondsRemaining() %}s 1s forwards hide_btn;
{%- endif -%}
- "
- ></button>
- </form>
+ {%- endif -%}
+ "
+ ></button>
{%- endif -%}
+ <style>#btn_delete_{%s e.UUID %}:active { background-image: url('/api/v1/chat/messages/delete/{%s e.UUID %}'); }</style>
{%- endif -%}
{%- if AuthUser.IsModerator() -%}
{%- if !e.OwnMessage(*AuthUser) -%}
diff --git a/pkg/web/handlers/api/v1/messages.qtpl.go b/pkg/web/handlers/api/v1/messages.qtpl.go
@@ -785,680 +785,676 @@ func StreamRenderMessage(qw422016 *qt422016.Writer, idx int, e database.ChatMess
//line messages.qtpl:338
if e.TooOldToDelete() {
//line messages.qtpl:338
- qw422016.N().S(` <form method="post" action="/api/v1/chat/messages/delete/`)
+ qw422016.N().S(` <button id="btn_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="`)
+ qw422016.N().S(`" class="mod-btn delete_msg_btn f-orange-clr" title="delete"></button>
+`)
//line messages.qtpl:340
- qw422016.E().S(CSRF)
+ } else {
//line messages.qtpl:340
- qw422016.N().S(`" />
- <button class="mod-btn delete_msg_btn f-orange-clr" title="delete"></button>
- </form>
+ qw422016.N().S(` <button id="btn_delete_`)
+//line messages.qtpl:341
+ qw422016.E().S(e.UUID)
+//line messages.qtpl:341
+ qw422016.N().S(`" class="mod-btn delete_msg_btn" title="delete"
+ style="
`)
//line messages.qtpl:343
- } else {
-//line messages.qtpl:343
- qw422016.N().S(` <form method="post" action="/api/v1/chat/messages/delete/`)
+ if string(e.User.Username) != NullUsername {
//line messages.qtpl:344
- qw422016.E().S(e.UUID)
+ if (AuthUser.IsModerator() && e.UserID != AuthUser.ID) || AuthUser.IsAdmin || e.IsRoomOwner(*AuthUser) {
//line messages.qtpl:344
- qw422016.N().S(`" class="d-inline">
- <input type="hidden" name="csrf" value="`)
-//line messages.qtpl:345
- qw422016.E().S(CSRF)
+ qw422016.N().S(` animation: `)
//line messages.qtpl:345
- qw422016.N().S(`" />
- <button class="mod-btn delete_msg_btn
- " title="delete"
- style="
-`)
-//line messages.qtpl:349
- if string(e.User.Username) != NullUsername {
-//line messages.qtpl:350
- if (AuthUser.IsModerator() && e.UserID != AuthUser.ID) || AuthUser.IsAdmin || e.IsRoomOwner(*AuthUser) {
-//line messages.qtpl:350
- qw422016.N().S(` animation: `)
-//line messages.qtpl:351
qw422016.N().DL(e.DeleteSecondsRemaining())
-//line messages.qtpl:351
+//line messages.qtpl:345
qw422016.N().S(`s 1s forwards orange_btn;
`)
-//line messages.qtpl:352
+//line messages.qtpl:346
} else {
-//line messages.qtpl:352
- qw422016.N().S(` animation: `)
-//line messages.qtpl:353
+//line messages.qtpl:346
+ qw422016.N().S(` animation: `)
+//line messages.qtpl:347
qw422016.N().DL(e.DeleteSecondsRemaining())
-//line messages.qtpl:353
+//line messages.qtpl:347
qw422016.N().S(`s 1s forwards hide_btn;
`)
-//line messages.qtpl:354
+//line messages.qtpl:348
}
-//line messages.qtpl:355
+//line messages.qtpl:349
}
-//line messages.qtpl:355
- qw422016.N().S(` "
- ></button>
- </form>
+//line messages.qtpl:349
+ qw422016.N().S(` "
+ ></button>
`)
-//line messages.qtpl:359
+//line messages.qtpl:352
}
-//line messages.qtpl:360
+//line messages.qtpl:352
+ qw422016.N().S(` <style>#btn_delete_`)
+//line messages.qtpl:353
+ qw422016.E().S(e.UUID)
+//line messages.qtpl:353
+ qw422016.N().S(`:active { background-image: url('/api/v1/chat/messages/delete/`)
+//line messages.qtpl:353
+ qw422016.E().S(e.UUID)
+//line messages.qtpl:353
+ qw422016.N().S(`'); }</style>
+`)
+//line messages.qtpl:354
}
-//line messages.qtpl:361
+//line messages.qtpl:355
if AuthUser.IsModerator() {
-//line messages.qtpl:362
+//line messages.qtpl:356
if !e.OwnMessage(*AuthUser) {
-//line messages.qtpl:363
+//line messages.qtpl:357
if AuthUser.DisplayHellbanButton {
-//line messages.qtpl:364
+//line messages.qtpl:358
if string(e.User.Username) == NullUsername {
-//line messages.qtpl:364
+//line messages.qtpl:358
qw422016.N().S(` <div class="spacer16"></div>
`)
-//line messages.qtpl:366
+//line messages.qtpl:360
} else {
-//line messages.qtpl:367
+//line messages.qtpl:361
if e.User.IsHellbanned {
-//line messages.qtpl:367
+//line messages.qtpl:361
qw422016.N().S(` <form method="post" action="/api/v1/users/`)
-//line messages.qtpl:368
+//line messages.qtpl:362
qw422016.E().S(e.UserID.String())
-//line messages.qtpl:368
+//line messages.qtpl:362
qw422016.N().S(`/unhellban" class="d-inline">
<input type="hidden" name="csrf" value="`)
-//line messages.qtpl:369
+//line messages.qtpl:363
qw422016.E().S(CSRF)
-//line messages.qtpl:369
+//line messages.qtpl:363
qw422016.N().S(`" />
<button class="mod-btn hb_btn f-orange-clr line-through" title="unhellban"></button>
</form>
`)
-//line messages.qtpl:372
+//line messages.qtpl:366
} else {
-//line messages.qtpl:372
+//line messages.qtpl:366
qw422016.N().S(` <form method="post" action="/api/v1/users/`)
-//line messages.qtpl:373
+//line messages.qtpl:367
qw422016.E().S(e.UserID.String())
-//line messages.qtpl:373
+//line messages.qtpl:367
qw422016.N().S(`/hellban" class="d-inline">
<input type="hidden" name="csrf" value="`)
-//line messages.qtpl:374
+//line messages.qtpl:368
qw422016.E().S(CSRF)
-//line messages.qtpl:374
+//line messages.qtpl:368
qw422016.N().S(`" />
<button class="mod-btn hb_btn f-orange-clr" title="hellban"></button>
</form>
`)
-//line messages.qtpl:377
+//line messages.qtpl:371
}
-//line messages.qtpl:378
+//line messages.qtpl:372
}
-//line messages.qtpl:379
+//line messages.qtpl:373
}
-//line messages.qtpl:380
+//line messages.qtpl:374
if AuthUser.DisplayKickButton {
-//line messages.qtpl:380
+//line messages.qtpl:374
qw422016.N().S(` <form method="post" action="/api/v1/users/`)
-//line messages.qtpl:381
+//line messages.qtpl:375
qw422016.E().S(e.UserID.String())
-//line messages.qtpl:381
+//line messages.qtpl:375
qw422016.N().S(`/kick" class="d-inline">
<input type="hidden" name="csrf" value="`)
-//line messages.qtpl:382
+//line messages.qtpl:376
qw422016.E().S(CSRF)
-//line messages.qtpl:382
+//line messages.qtpl:376
qw422016.N().S(`" />
<button class="mod-btn k_btn f-orange-clr" title="kick"></button>
</form>
`)
-//line messages.qtpl:385
+//line messages.qtpl:379
}
-//line messages.qtpl:386
+//line messages.qtpl:380
} else {
-//line messages.qtpl:387
+//line messages.qtpl:381
if AuthUser.DisplayKickButton && AuthUser.DisplayHellbanButton {
-//line messages.qtpl:387
+//line messages.qtpl:381
qw422016.N().S(` <div class="spacer36"></div>
`)
-//line messages.qtpl:389
+//line messages.qtpl:383
} else if AuthUser.DisplayKickButton || AuthUser.DisplayHellbanButton {
-//line messages.qtpl:389
+//line messages.qtpl:383
qw422016.N().S(` <div class="spacer16"></div>
`)
-//line messages.qtpl:391
+//line messages.qtpl:385
}
-//line messages.qtpl:392
+//line messages.qtpl:386
}
-//line messages.qtpl:393
+//line messages.qtpl:387
}
-//line messages.qtpl:394
+//line messages.qtpl:388
} else {
-//line messages.qtpl:395
+//line messages.qtpl:389
if Data.NbButtons == 3 {
-//line messages.qtpl:395
+//line messages.qtpl:389
qw422016.N().S(` <div class="spacer56"></div>
`)
-//line messages.qtpl:397
+//line messages.qtpl:391
} else if Data.NbButtons == 2 {
-//line messages.qtpl:397
+//line messages.qtpl:391
qw422016.N().S(` <div class="spacer36"></div>
`)
-//line messages.qtpl:399
+//line messages.qtpl:393
} else if Data.NbButtons == 1 {
-//line messages.qtpl:399
+//line messages.qtpl:393
qw422016.N().S(` <div class="spacer16"></div>
`)
-//line messages.qtpl:401
+//line messages.qtpl:395
}
-//line messages.qtpl:402
+//line messages.qtpl:396
}
-//line messages.qtpl:403
+//line messages.qtpl:397
if AuthUser.GetDateFormat() != "" {
-//line messages.qtpl:403
+//line messages.qtpl:397
qw422016.N().S(` <a href="`)
-//line messages.qtpl:404
+//line messages.qtpl:398
qw422016.E().S(baseTopBarURL)
-//line messages.qtpl:404
+//line messages.qtpl:398
qw422016.N().S(`?quote=`)
-//line messages.qtpl:404
+//line messages.qtpl:398
qw422016.E().S(e.UUID)
-//line messages.qtpl:404
+//line messages.qtpl:398
streamunesc(qw422016, Data.TopBarQueryParams)
-//line messages.qtpl:404
+//line messages.qtpl:398
qw422016.N().S(`" target="iframe1" class="date date-link" title="`)
-//line messages.qtpl:404
+//line messages.qtpl:398
qw422016.E().S(e.CreatedAt.Format("01-02 15:04:05"))
-//line messages.qtpl:404
+//line messages.qtpl:398
if *isFirstMsg {
-//line messages.qtpl:404
+//line messages.qtpl:398
qw422016.N().S(` (`)
-//line messages.qtpl:404
+//line messages.qtpl:398
qw422016.E().S(humanize.Time(e.CreatedAt))
-//line messages.qtpl:404
+//line messages.qtpl:398
qw422016.N().S(`)`)
-//line messages.qtpl:404
+//line messages.qtpl:398
}
-//line messages.qtpl:404
+//line messages.qtpl:398
qw422016.N().S(`">`)
-//line messages.qtpl:404
+//line messages.qtpl:398
qw422016.E().S(e.CreatedAt.Format(AuthUser.GetDateFormat()))
-//line messages.qtpl:404
+//line messages.qtpl:398
qw422016.N().S(`</a>
`)
-//line messages.qtpl:405
+//line messages.qtpl:399
*isFirstMsg = false
-//line messages.qtpl:405
+//line messages.qtpl:399
qw422016.N().S(`
`)
-//line messages.qtpl:406
+//line messages.qtpl:400
}
-//line messages.qtpl:406
+//line messages.qtpl:400
qw422016.N().S(` <a href="/u/`)
-//line messages.qtpl:407
+//line messages.qtpl:401
qw422016.E().S(string(e.GetProfile(AuthUser)))
-//line messages.qtpl:407
+//line messages.qtpl:401
qw422016.N().S(`" target="_blank" class="f-def-clr">-</a>
`)
-//line messages.qtpl:408
+//line messages.qtpl:402
if e.System {
-//line messages.qtpl:408
+//line messages.qtpl:402
qw422016.N().S(` <span class="sysmsg">`)
-//line messages.qtpl:409
+//line messages.qtpl:403
streamunesc(qw422016, e.Message)
-//line messages.qtpl:409
+//line messages.qtpl:403
qw422016.N().S(`</span>
`)
-//line messages.qtpl:410
+//line messages.qtpl:404
} else {
-//line messages.qtpl:411
+//line messages.qtpl:405
if e.Moderators {
-//line messages.qtpl:411
+//line messages.qtpl:405
qw422016.N().S(`<span class="sysmsg">[<a href="`)
-//line messages.qtpl:411
+//line messages.qtpl:405
qw422016.E().S(baseTopBarURL)
-//line messages.qtpl:411
+//line messages.qtpl:405
qw422016.N().S(`?m=1`)
-//line messages.qtpl:411
+//line messages.qtpl:405
streamunesc(qw422016, Data.TopBarQueryParams)
-//line messages.qtpl:411
+//line messages.qtpl:405
qw422016.N().S(`" target="iframe1" class="sysmsg f-white-clr">M</a>]</span> `)
-//line messages.qtpl:411
+//line messages.qtpl:405
}
-//line messages.qtpl:412
+//line messages.qtpl:406
if e.GroupID != nil {
-//line messages.qtpl:412
+//line messages.qtpl:406
qw422016.N().S(`<span class="sysmsg">[<a href="`)
-//line messages.qtpl:412
+//line messages.qtpl:406
qw422016.E().S(baseTopBarURL)
-//line messages.qtpl:412
+//line messages.qtpl:406
qw422016.N().S(`?g=`)
-//line messages.qtpl:412
+//line messages.qtpl:406
qw422016.E().S(e.Group.Name)
-//line messages.qtpl:412
+//line messages.qtpl:406
streamunesc(qw422016, Data.TopBarQueryParams)
-//line messages.qtpl:412
+//line messages.qtpl:406
qw422016.N().S(`" target="iframe1" class="sysmsg f-white-clr">`)
-//line messages.qtpl:412
+//line messages.qtpl:406
qw422016.E().S(e.Group.Name)
-//line messages.qtpl:412
+//line messages.qtpl:406
qw422016.N().S(`</a>]</span> `)
-//line messages.qtpl:412
+//line messages.qtpl:406
}
-//line messages.qtpl:413
+//line messages.qtpl:407
if e.ToUserID != nil {
-//line messages.qtpl:413
+//line messages.qtpl:407
qw422016.N().S(` [`)
-//line messages.qtpl:414
+//line messages.qtpl:408
streamfromUsername(qw422016, AuthUser, Data, e, baseTopBarURL)
-//line messages.qtpl:414
+//line messages.qtpl:408
qw422016.N().S(` →
`)
-//line messages.qtpl:416
+//line messages.qtpl:410
if e.ToUser.ID == AuthUser.ID {
-//line messages.qtpl:416
+//line messages.qtpl:410
qw422016.N().S(`<span `)
-//line messages.qtpl:416
+//line messages.qtpl:410
streamunesc(qw422016, e.ToUser.GenerateChatStyle())
-//line messages.qtpl:416
+//line messages.qtpl:410
qw422016.N().S(`>`)
-//line messages.qtpl:416
+//line messages.qtpl:410
qw422016.E().S(string(e.ToUser.Username))
-//line messages.qtpl:416
+//line messages.qtpl:410
qw422016.N().S(`</span>`)
-//line messages.qtpl:416
+//line messages.qtpl:410
} else {
-//line messages.qtpl:416
+//line messages.qtpl:410
qw422016.N().S(`<a `)
-//line messages.qtpl:416
+//line messages.qtpl:410
streamunesc(qw422016, e.ToUser.GenerateChatStyle())
-//line messages.qtpl:416
+//line messages.qtpl:410
qw422016.N().S(` href="`)
-//line messages.qtpl:416
+//line messages.qtpl:410
qw422016.E().S(baseTopBarURL)
-//line messages.qtpl:416
+//line messages.qtpl:410
qw422016.N().S(`?pm=`)
-//line messages.qtpl:416
+//line messages.qtpl:410
qw422016.E().S(string(e.ToUser.Username))
-//line messages.qtpl:416
+//line messages.qtpl:410
qw422016.E().S(Data.TopBarQueryParams)
-//line messages.qtpl:416
+//line messages.qtpl:410
qw422016.N().S(`" target="iframe1">`)
-//line messages.qtpl:416
+//line messages.qtpl:410
qw422016.E().S(string(e.ToUser.Username))
-//line messages.qtpl:416
+//line messages.qtpl:410
qw422016.N().S(`</a>`)
-//line messages.qtpl:416
+//line messages.qtpl:410
}
-//line messages.qtpl:416
+//line messages.qtpl:410
qw422016.N().S(`] -
`)
-//line messages.qtpl:417
+//line messages.qtpl:411
} else {
-//line messages.qtpl:418
+//line messages.qtpl:412
streamfromUsername(qw422016, AuthUser, Data, e, baseTopBarURL)
-//line messages.qtpl:419
+//line messages.qtpl:413
if !e.IsMe() {
-//line messages.qtpl:420
+//line messages.qtpl:414
if AuthUser.CanSeeHB() && (e.IsHellbanned || e.User.IsHellbanned) && (e.ToUserID == nil) {
-//line messages.qtpl:420
+//line messages.qtpl:414
qw422016.N().S(` <a href="`)
-//line messages.qtpl:421
+//line messages.qtpl:415
qw422016.E().S(baseTopBarURL)
-//line messages.qtpl:421
+//line messages.qtpl:415
qw422016.N().S(`?hbm=1`)
-//line messages.qtpl:421
+//line messages.qtpl:415
streamunesc(qw422016, Data.TopBarQueryParams)
-//line messages.qtpl:421
+//line messages.qtpl:415
qw422016.N().S(`" target="iframe1" class="f-def-clr">-</a>
`)
-//line messages.qtpl:422
+//line messages.qtpl:416
} else {
-//line messages.qtpl:422
+//line messages.qtpl:416
qw422016.N().S(` -
`)
-//line messages.qtpl:424
+//line messages.qtpl:418
}
-//line messages.qtpl:425
+//line messages.qtpl:419
}
-//line messages.qtpl:426
+//line messages.qtpl:420
}
-//line messages.qtpl:426
+//line messages.qtpl:420
qw422016.N().S(` <span `)
-//line messages.qtpl:427
+//line messages.qtpl:421
streamunesc(qw422016, e.User.GenerateChatStyle())
-//line messages.qtpl:427
+//line messages.qtpl:421
qw422016.N().S(`><span class="o-wrap">`)
-//line messages.qtpl:427
+//line messages.qtpl:421
qw422016.N().S(unesc(e.MsgToDisplay(AuthUser)))
-//line messages.qtpl:427
+//line messages.qtpl:421
qw422016.N().S(`</span></span>
`)
-//line messages.qtpl:428
+//line messages.qtpl:422
}
-//line messages.qtpl:428
+//line messages.qtpl:422
qw422016.N().S(` </div>
`)
-//line messages.qtpl:430
+//line messages.qtpl:424
}
-//line messages.qtpl:431
+//line messages.qtpl:425
}
-//line messages.qtpl:431
+//line messages.qtpl:425
func WriteRenderMessage(qq422016 qtio422016.Writer, idx int, e database.ChatMessage, AuthUser *database.User,
Data ChatMessagesData, baseTopBarURL string, readMarkerRendered, isFirstMsg *bool, CSRF, NullUsername string, readMarkerRev *int, isEdit bool) {
-//line messages.qtpl:431
+//line messages.qtpl:425
qw422016 := qt422016.AcquireWriter(qq422016)
-//line messages.qtpl:431
+//line messages.qtpl:425
StreamRenderMessage(qw422016, idx, e, AuthUser, Data, baseTopBarURL, readMarkerRendered, isFirstMsg, CSRF, NullUsername, readMarkerRev, isEdit)
-//line messages.qtpl:431
+//line messages.qtpl:425
qt422016.ReleaseWriter(qw422016)
-//line messages.qtpl:431
+//line messages.qtpl:425
}
-//line messages.qtpl:431
+//line messages.qtpl:425
func RenderMessage(idx int, e database.ChatMessage, AuthUser *database.User,
Data ChatMessagesData, baseTopBarURL string, readMarkerRendered, isFirstMsg *bool, CSRF, NullUsername string, readMarkerRev *int, isEdit bool) string {
-//line messages.qtpl:431
+//line messages.qtpl:425
qb422016 := qt422016.AcquireByteBuffer()
-//line messages.qtpl:431
+//line messages.qtpl:425
WriteRenderMessage(qb422016, idx, e, AuthUser, Data, baseTopBarURL, readMarkerRendered, isFirstMsg, CSRF, NullUsername, readMarkerRev, isEdit)
-//line messages.qtpl:431
+//line messages.qtpl:425
qs422016 := string(qb422016.B)
-//line messages.qtpl:431
+//line messages.qtpl:425
qt422016.ReleaseByteBuffer(qb422016)
-//line messages.qtpl:431
+//line messages.qtpl:425
return qs422016
-//line messages.qtpl:431
+//line messages.qtpl:425
}
-//line messages.qtpl:434
+//line messages.qtpl:428
func StreamMember(qw422016 *qt422016.Writer, AuthUser *database.User, Data ChatMenuData, El managers.UserInfo) {
-//line messages.qtpl:434
+//line messages.qtpl:428
qw422016.N().S(`
`)
-//line messages.qtpl:435
+//line messages.qtpl:429
baseTopBarURL := "/api/v1/chat/top-bar/" + Data.RoomName
-//line messages.qtpl:436
+//line messages.qtpl:430
if El.Username == AuthUser.Username {
-//line messages.qtpl:436
+//line messages.qtpl:430
qw422016.N().S(` <div>
<span style="color: `)
-//line messages.qtpl:438
+//line messages.qtpl:432
qw422016.E().S(El.Color)
-//line messages.qtpl:438
+//line messages.qtpl:432
qw422016.N().S(`;">`)
-//line messages.qtpl:438
+//line messages.qtpl:432
qw422016.E().S(string(El.Username))
-//line messages.qtpl:438
+//line messages.qtpl:432
qw422016.N().S(`</span>
`)
-//line messages.qtpl:439
+//line messages.qtpl:433
if El.AfkIndicatorEnabled {
-//line messages.qtpl:439
+//line messages.qtpl:433
qw422016.N().S(` <small class="afk-indicator">afk</small>
`)
-//line messages.qtpl:441
+//line messages.qtpl:435
}
-//line messages.qtpl:441
+//line messages.qtpl:435
qw422016.N().S(` </div>
`)
-//line messages.qtpl:443
+//line messages.qtpl:437
} else {
-//line messages.qtpl:444
+//line messages.qtpl:438
if !El.IsHellbanned || AuthUser.ID == El.UserID || (El.IsHellbanned && AuthUser.IsHellbanned) || AuthUser.DisplayHellbanned {
-//line messages.qtpl:444
+//line messages.qtpl:438
qw422016.N().S(` <div>
`)
-//line messages.qtpl:446
+//line messages.qtpl:440
tagType := "tag"
-//line messages.qtpl:447
+//line messages.qtpl:441
if AuthUser.CanSeeHB() && El.IsHellbanned {
-//line messages.qtpl:448
+//line messages.qtpl:442
tagType = "htag"
-//line messages.qtpl:449
+//line messages.qtpl:443
}
-//line messages.qtpl:450
+//line messages.qtpl:444
qw422016.N().S(`<a href="`)
-//line messages.qtpl:451
+//line messages.qtpl:445
qw422016.E().S(baseTopBarURL)
-//line messages.qtpl:451
+//line messages.qtpl:445
qw422016.N().S(`?`)
-//line messages.qtpl:451
+//line messages.qtpl:445
qw422016.E().S(tagType)
-//line messages.qtpl:451
+//line messages.qtpl:445
qw422016.N().S(`=`)
-//line messages.qtpl:451
+//line messages.qtpl:445
qw422016.E().S(string(El.Username))
-//line messages.qtpl:451
+//line messages.qtpl:445
streamunesc(qw422016, Data.TopBarQueryParams)
-//line messages.qtpl:451
+//line messages.qtpl:445
qw422016.N().S(`"target="iframe1"`)
-//line messages.qtpl:453
+//line messages.qtpl:447
if El.IsHellbanned && AuthUser.DisplayHellbanned {
-//line messages.qtpl:453
+//line messages.qtpl:447
qw422016.N().S(`class="hb-row"`)
-//line messages.qtpl:453
+//line messages.qtpl:447
}
-//line messages.qtpl:453
+//line messages.qtpl:447
qw422016.N().S(`style="color:`)
-//line messages.qtpl:454
+//line messages.qtpl:448
qw422016.E().S(El.Color)
-//line messages.qtpl:454
+//line messages.qtpl:448
qw422016.N().S(`;">`)
-//line messages.qtpl:454
+//line messages.qtpl:448
qw422016.E().S(string(El.Username[0]))
-//line messages.qtpl:454
+//line messages.qtpl:448
qw422016.N().S(`</a><a href="`)
-//line messages.qtpl:455
+//line messages.qtpl:449
qw422016.E().S(baseTopBarURL)
-//line messages.qtpl:455
+//line messages.qtpl:449
qw422016.N().S(`?pm=`)
-//line messages.qtpl:455
+//line messages.qtpl:449
qw422016.E().S(string(El.Username))
-//line messages.qtpl:455
+//line messages.qtpl:449
streamunesc(qw422016, Data.TopBarQueryParams)
-//line messages.qtpl:455
+//line messages.qtpl:449
qw422016.N().S(`"target="iframe1"`)
-//line messages.qtpl:457
+//line messages.qtpl:451
if El.IsHellbanned && AuthUser.DisplayHellbanned {
-//line messages.qtpl:457
+//line messages.qtpl:451
qw422016.N().S(`class="hb-row"`)
-//line messages.qtpl:457
+//line messages.qtpl:451
}
-//line messages.qtpl:457
+//line messages.qtpl:451
qw422016.N().S(`style="color:`)
-//line messages.qtpl:458
+//line messages.qtpl:452
qw422016.E().S(El.Color)
-//line messages.qtpl:458
+//line messages.qtpl:452
qw422016.N().S(`;">`)
-//line messages.qtpl:458
+//line messages.qtpl:452
qw422016.E().S(string(El.Username[1 : len(El.Username)-1]))
-//line messages.qtpl:458
+//line messages.qtpl:452
qw422016.N().S(`</a><a href="/u/`)
-//line messages.qtpl:459
+//line messages.qtpl:453
qw422016.E().S(string(El.Username))
-//line messages.qtpl:459
+//line messages.qtpl:453
qw422016.N().S(`"rel="noopener noreferrer" target="_blank"`)
-//line messages.qtpl:461
+//line messages.qtpl:455
if El.IsHellbanned && AuthUser.DisplayHellbanned {
-//line messages.qtpl:461
+//line messages.qtpl:455
qw422016.N().S(`class="hb-row"`)
-//line messages.qtpl:461
+//line messages.qtpl:455
}
-//line messages.qtpl:461
+//line messages.qtpl:455
qw422016.N().S(`style="color:`)
-//line messages.qtpl:462
+//line messages.qtpl:456
qw422016.E().S(El.Color)
-//line messages.qtpl:462
+//line messages.qtpl:456
qw422016.N().S(`;">`)
-//line messages.qtpl:462
+//line messages.qtpl:456
qw422016.E().S(string(El.Username[len(El.Username)-1]))
-//line messages.qtpl:462
+//line messages.qtpl:456
qw422016.N().S(`</a>`)
-//line messages.qtpl:464
+//line messages.qtpl:458
if El.AfkIndicatorEnabled {
-//line messages.qtpl:464
+//line messages.qtpl:458
qw422016.N().S(` <small class="afk-indicator">afk</small>
`)
-//line messages.qtpl:466
+//line messages.qtpl:460
}
-//line messages.qtpl:466
+//line messages.qtpl:460
qw422016.N().S(` </div>
`)
-//line messages.qtpl:468
+//line messages.qtpl:462
}
-//line messages.qtpl:469
+//line messages.qtpl:463
}
-//line messages.qtpl:470
+//line messages.qtpl:464
}
-//line messages.qtpl:470
+//line messages.qtpl:464
func WriteMember(qq422016 qtio422016.Writer, AuthUser *database.User, Data ChatMenuData, El managers.UserInfo) {
-//line messages.qtpl:470
+//line messages.qtpl:464
qw422016 := qt422016.AcquireWriter(qq422016)
-//line messages.qtpl:470
+//line messages.qtpl:464
StreamMember(qw422016, AuthUser, Data, El)
-//line messages.qtpl:470
+//line messages.qtpl:464
qt422016.ReleaseWriter(qw422016)
-//line messages.qtpl:470
+//line messages.qtpl:464
}
-//line messages.qtpl:470
+//line messages.qtpl:464
func Member(AuthUser *database.User, Data ChatMenuData, El managers.UserInfo) string {
-//line messages.qtpl:470
+//line messages.qtpl:464
qb422016 := qt422016.AcquireByteBuffer()
-//line messages.qtpl:470
+//line messages.qtpl:464
WriteMember(qb422016, AuthUser, Data, El)
-//line messages.qtpl:470
+//line messages.qtpl:464
qs422016 := string(qb422016.B)
-//line messages.qtpl:470
+//line messages.qtpl:464
qt422016.ReleaseByteBuffer(qb422016)
-//line messages.qtpl:470
+//line messages.qtpl:464
return qs422016
-//line messages.qtpl:470
+//line messages.qtpl:464
}
-//line messages.qtpl:473
+//line messages.qtpl:467
func streamfromUsername(qw422016 *qt422016.Writer, AuthUser *database.User, Data ChatMessagesData, El database.ChatMessage, baseTopBarURL string) {
-//line messages.qtpl:474
+//line messages.qtpl:468
tagType := "tag"
-//line messages.qtpl:475
+//line messages.qtpl:469
if El.ToUserID != nil {
-//line messages.qtpl:476
+//line messages.qtpl:470
tagType = "pm"
-//line messages.qtpl:477
+//line messages.qtpl:471
} else if AuthUser.CanSeeHB() && (El.IsHellbanned || El.User.IsHellbanned) {
-//line messages.qtpl:478
+//line messages.qtpl:472
tagType = "htag"
-//line messages.qtpl:479
+//line messages.qtpl:473
} else if AuthUser.IsModerator() && El.Moderators {
-//line messages.qtpl:480
+//line messages.qtpl:474
tagType = "mtag"
-//line messages.qtpl:481
+//line messages.qtpl:475
}
-//line messages.qtpl:482
+//line messages.qtpl:476
if El.User.ID == AuthUser.ID {
-//line messages.qtpl:483
+//line messages.qtpl:477
if El.CanBeEdited() {
-//line messages.qtpl:483
+//line messages.qtpl:477
qw422016.N().S(`<a `)
-//line messages.qtpl:483
+//line messages.qtpl:477
streamunesc(qw422016, El.User.GenerateChatStyle())
-//line messages.qtpl:483
+//line messages.qtpl:477
qw422016.N().S(` href="`)
-//line messages.qtpl:483
+//line messages.qtpl:477
qw422016.E().S(baseTopBarURL)
-//line messages.qtpl:483
+//line messages.qtpl:477
qw422016.N().S(`?e=`)
-//line messages.qtpl:483
+//line messages.qtpl:477
qw422016.E().S(El.CreatedAt.Format("15:04:05"))
-//line messages.qtpl:483
+//line messages.qtpl:477
streamunesc(qw422016, Data.TopBarQueryParams)
-//line messages.qtpl:483
+//line messages.qtpl:477
qw422016.N().S(`" target="iframe1">`)
-//line messages.qtpl:483
+//line messages.qtpl:477
qw422016.E().S(string(El.User.Username))
-//line messages.qtpl:483
+//line messages.qtpl:477
qw422016.N().S(`</a>`)
-//line messages.qtpl:483
+//line messages.qtpl:477
} else {
-//line messages.qtpl:483
+//line messages.qtpl:477
qw422016.N().S(`<span `)
-//line messages.qtpl:483
+//line messages.qtpl:477
streamunesc(qw422016, El.User.GenerateChatStyle())
-//line messages.qtpl:483
+//line messages.qtpl:477
qw422016.N().S(`>`)
-//line messages.qtpl:483
+//line messages.qtpl:477
qw422016.E().S(string(El.User.Username))
-//line messages.qtpl:483
+//line messages.qtpl:477
qw422016.N().S(`</span>`)
-//line messages.qtpl:483
+//line messages.qtpl:477
}
-//line messages.qtpl:484
+//line messages.qtpl:478
} else {
-//line messages.qtpl:484
+//line messages.qtpl:478
qw422016.N().S(`<a `)
-//line messages.qtpl:484
+//line messages.qtpl:478
streamunesc(qw422016, El.User.GenerateChatStyle())
-//line messages.qtpl:484
+//line messages.qtpl:478
qw422016.N().S(` href="`)
-//line messages.qtpl:484
+//line messages.qtpl:478
qw422016.E().S(baseTopBarURL)
-//line messages.qtpl:484
+//line messages.qtpl:478
qw422016.N().S(`?`)
-//line messages.qtpl:484
+//line messages.qtpl:478
qw422016.E().S(tagType)
-//line messages.qtpl:484
+//line messages.qtpl:478
qw422016.N().S(`=`)
-//line messages.qtpl:484
+//line messages.qtpl:478
qw422016.E().S(string(El.User.Username))
-//line messages.qtpl:484
+//line messages.qtpl:478
streamunesc(qw422016, Data.TopBarQueryParams)
-//line messages.qtpl:484
+//line messages.qtpl:478
qw422016.N().S(`" target="iframe1">`)
-//line messages.qtpl:484
+//line messages.qtpl:478
qw422016.E().S(string(El.User.Username))
-//line messages.qtpl:484
+//line messages.qtpl:478
qw422016.N().S(`</a>`)
-//line messages.qtpl:484
+//line messages.qtpl:478
}
-//line messages.qtpl:485
+//line messages.qtpl:479
}
-//line messages.qtpl:485
+//line messages.qtpl:479
func writefromUsername(qq422016 qtio422016.Writer, AuthUser *database.User, Data ChatMessagesData, El database.ChatMessage, baseTopBarURL string) {
-//line messages.qtpl:485
+//line messages.qtpl:479
qw422016 := qt422016.AcquireWriter(qq422016)
-//line messages.qtpl:485
+//line messages.qtpl:479
streamfromUsername(qw422016, AuthUser, Data, El, baseTopBarURL)
-//line messages.qtpl:485
+//line messages.qtpl:479
qt422016.ReleaseWriter(qw422016)
-//line messages.qtpl:485
+//line messages.qtpl:479
}
-//line messages.qtpl:485
+//line messages.qtpl:479
func fromUsername(AuthUser *database.User, Data ChatMessagesData, El database.ChatMessage, baseTopBarURL string) string {
-//line messages.qtpl:485
+//line messages.qtpl:479
qb422016 := qt422016.AcquireByteBuffer()
-//line messages.qtpl:485
+//line messages.qtpl:479
writefromUsername(qb422016, AuthUser, Data, El, baseTopBarURL)
-//line messages.qtpl:485
+//line messages.qtpl:479
qs422016 := string(qb422016.B)
-//line messages.qtpl:485
+//line messages.qtpl:479
qt422016.ReleaseByteBuffer(qb422016)
-//line messages.qtpl:485
+//line messages.qtpl:479
return qs422016
-//line messages.qtpl:485
+//line messages.qtpl:479
}
diff --git a/pkg/web/web.go b/pkg/web/web.go
@@ -165,6 +165,7 @@ func getMainServer(db *database.DkfDB, i18nBundle *i18n.Bundle, renderer *tmp.Te
authGroup.POST("/api/v1/session-notifications/delete/:sessionNotificationID", v1.DeleteSessionNotificationHandler)
authGroup.POST("/api/v1/inbox/delete/:messageID", v1.ChatInboxDeleteMessageHandler)
authGroup.POST("/api/v1/inbox/delete-all", v1.ChatInboxDeleteAllMessageHandler)
+ authGroup.GET("/api/v1/chat/messages/delete/:messageUUID", v1.ChatDeleteMessageHandler)
authGroup.POST("/api/v1/chat/messages/delete/:messageUUID", v1.ChatDeleteMessageHandler)
authGroup.POST("/api/v1/chat/messages/reactions", v1.ChatMessageReactionHandler)
authGroup.POST("/api/v1/rooms/:roomName/subscribe", v1.SubscribeHandler)