@@ -12,6 +12,7 @@ import (
12
12
"github.com/diamondburned/arikawa/v3/discord"
13
13
"github.com/diamondburned/arikawa/v3/gateway"
14
14
"github.com/diamondburned/arikawa/v3/utils/sendpart"
15
+ "github.com/diamondburned/chatkit/components/author"
15
16
"github.com/diamondburned/gotk4-adwaita/pkg/adw"
16
17
"github.com/diamondburned/gotk4/pkg/glib/v2"
17
18
"github.com/diamondburned/gotk4/pkg/gtk/v4"
@@ -902,8 +903,45 @@ func (v *View) EditLastMessage() bool {
902
903
return true
903
904
}
904
905
905
- // Delete deletes the message with the given ID.
906
+ // Delete deletes the message with the given ID. It may prompt the user to
907
+ // confirm the deletion.
906
908
func (v * View ) Delete (id discord.MessageID ) {
909
+ if ! askBeforeDelete .Value () {
910
+ v .delete (id )
911
+ return
912
+ }
913
+
914
+ user := "?" // juuust in case
915
+
916
+ row , ok := v .msgs [messageKeyID (id )]
917
+ if ok {
918
+ message := row .message .Message ()
919
+ state := gtkcord .FromContext (v .ctx )
920
+ user = state .AuthorMarkup (& gateway.MessageCreateEvent {Message : * message },
921
+ author .WithMinimal ())
922
+ user = "<b>" + user + "</b>"
923
+ }
924
+
925
+ window := app .GTKWindowFromContext (v .ctx )
926
+ dialog := adw .NewMessageDialog (window ,
927
+ locale .Get ("Delete Message" ),
928
+ locale .Sprintf ("Are you sure you want to delete %s's message?" , user ))
929
+ dialog .SetBodyUseMarkup (true )
930
+ dialog .AddResponse ("cancel" , locale .Get ("_Cancel" ))
931
+ dialog .AddResponse ("delete" , locale .Get ("_Delete" ))
932
+ dialog .SetResponseAppearance ("delete" , adw .ResponseDestructive )
933
+ dialog .SetDefaultResponse ("cancel" )
934
+ dialog .SetCloseResponse ("cancel" )
935
+ dialog .ConnectResponse (func (response string ) {
936
+ switch response {
937
+ case "delete" :
938
+ v .delete (id )
939
+ }
940
+ })
941
+ dialog .Show ()
942
+ }
943
+
944
+ func (v * View ) delete (id discord.MessageID ) {
907
945
if msg , ok := v .msgs [messageKeyID (id )]; ok {
908
946
// Visual indicator.
909
947
msg .SetSensitive (false )
0 commit comments