No known key found for this signature in database
GPG Key ID: 66C92B1C5B475512
7 changed files with 51 additions and 245 deletions
-
9src/config/settings.go
-
12src/domains/send/text.go
-
98src/pkg/utils/chat_storage.go
-
3src/pkg/whatsapp/init.go
-
111src/pkg/whatsapp/utils.go
-
32src/services/send.go
-
31src/views/components/SendMessage.js
@ -1,7 +1,13 @@ |
|||||
package send |
package send |
||||
|
|
||||
type MessageRequest struct { |
type MessageRequest struct { |
||||
Phone string `json:"phone" form:"phone"` |
|
||||
Message string `json:"message" form:"message"` |
|
||||
ReplyMessageID *string `json:"reply_message_id" form:"reply_message_id"` |
|
||||
|
Phone string `json:"phone" form:"phone"` |
||||
|
Message string `json:"message" form:"message"` |
||||
|
Reply *ReplyMessageRequest `json:"reply" form:"reply"` |
||||
|
} |
||||
|
|
||||
|
type ReplyMessageRequest struct { |
||||
|
ReplyMessageID string `json:"reply_message_id" form:"reply_message_id"` |
||||
|
ParticipantJID string `json:"participant_jid" form:"participant_jid"` |
||||
|
Quote string `json:"quote" form:"quote"` |
||||
} |
} |
||||
@ -1,98 +0,0 @@ |
|||||
package utils |
|
||||
|
|
||||
import ( |
|
||||
"fmt" |
|
||||
"os" |
|
||||
"strings" |
|
||||
|
|
||||
"github.com/aldinokemal/go-whatsapp-web-multidevice/config" |
|
||||
"github.com/gofiber/fiber/v2/log" |
|
||||
) |
|
||||
|
|
||||
type RecordedMessage struct { |
|
||||
MessageID string `json:"message_id,omitempty"` |
|
||||
JID string `json:"jid,omitempty"` |
|
||||
MessageContent string `json:"message_content,omitempty"` |
|
||||
} |
|
||||
|
|
||||
func FindRecordFromStorage(messageID string) (RecordedMessage, error) { |
|
||||
data, err := os.ReadFile(config.PathChatStorage) |
|
||||
if err != nil { |
|
||||
return RecordedMessage{}, err |
|
||||
} |
|
||||
|
|
||||
lines := strings.Split(string(data), "\n") |
|
||||
for _, line := range lines { |
|
||||
if line == "" { |
|
||||
continue |
|
||||
} |
|
||||
parts := strings.Split(line, ",") |
|
||||
if len(parts) == 3 && parts[0] == messageID { |
|
||||
return RecordedMessage{ |
|
||||
MessageID: parts[0], |
|
||||
JID: parts[1], |
|
||||
MessageContent: parts[2], |
|
||||
}, nil |
|
||||
} |
|
||||
} |
|
||||
return RecordedMessage{}, fmt.Errorf("message ID %s not found in storage", messageID) |
|
||||
} |
|
||||
|
|
||||
func RecordMessage(messageID string, senderJID string, messageContent string) { |
|
||||
message := RecordedMessage{ |
|
||||
MessageID: messageID, |
|
||||
JID: senderJID, |
|
||||
MessageContent: messageContent, |
|
||||
} |
|
||||
|
|
||||
// Read existing messages
|
|
||||
var messages []RecordedMessage |
|
||||
if data, err := os.ReadFile(config.PathChatStorage); err == nil { |
|
||||
// Split file by newlines and parse each line
|
|
||||
lines := strings.Split(string(data), "\n") |
|
||||
for _, line := range lines { |
|
||||
if line == "" { |
|
||||
continue |
|
||||
} |
|
||||
parts := strings.Split(line, ",") |
|
||||
|
|
||||
msg := RecordedMessage{ |
|
||||
MessageID: parts[0], |
|
||||
JID: parts[1], |
|
||||
MessageContent: parts[2], |
|
||||
} |
|
||||
messages = append(messages, msg) |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
// Check for duplicates
|
|
||||
for _, msg := range messages { |
|
||||
if msg.MessageID == message.MessageID { |
|
||||
return // Skip if duplicate found
|
|
||||
} |
|
||||
} |
|
||||
|
|
||||
// Write new message at the top
|
|
||||
f, err := os.OpenFile(config.PathChatStorage, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0644) |
|
||||
if err != nil { |
|
||||
log.Errorf("Failed to open received-chat.txt: %v", err) |
|
||||
return |
|
||||
} |
|
||||
defer f.Close() |
|
||||
|
|
||||
// Write new message first
|
|
||||
csvLine := fmt.Sprintf("%s,%s,%s\n", message.MessageID, message.JID, message.MessageContent) |
|
||||
if _, err := f.WriteString(csvLine); err != nil { |
|
||||
log.Errorf("Failed to write to received-chat.txt: %v", err) |
|
||||
return |
|
||||
} |
|
||||
|
|
||||
// Write existing messages after
|
|
||||
for _, msg := range messages { |
|
||||
csvLine := fmt.Sprintf("%s,%s,%s\n", msg.MessageID, msg.JID, msg.MessageContent) |
|
||||
if _, err := f.WriteString(csvLine); err != nil { |
|
||||
log.Errorf("Failed to write to received-chat.txt: %v", err) |
|
||||
return |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue