aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--persistence/sessions.go11
-rw-r--r--persistence/sessions_test.go1
-rw-r--r--telegram/utils.go57
3 files changed, 50 insertions, 19 deletions
diff --git a/persistence/sessions.go b/persistence/sessions.go
index c0750a3..1658cc9 100644
--- a/persistence/sessions.go
+++ b/persistence/sessions.go
@@ -41,6 +41,7 @@ type Session struct {
AsciiArrows bool `yaml:":asciiarrows"`
OOBMode bool `yaml:":oobmode"`
Carbons bool `yaml:":carbons"`
+ HideIds bool `yaml:":hideids"`
}
var configKeys = []string{
@@ -50,6 +51,7 @@ var configKeys = []string{
"asciiarrows",
"oobmode",
"carbons",
+ "hideids",
}
var sessionDB *SessionsYamlDB
@@ -126,6 +128,8 @@ func (s *Session) Get(key string) (string, error) {
return fromBool(s.OOBMode), nil
case "carbons":
return fromBool(s.Carbons), nil
+ case "hideids":
+ return fromBool(s.HideIds), nil
}
return "", errors.New("Unknown session property")
@@ -183,6 +187,13 @@ func (s *Session) Set(key string, value string) (string, error) {
}
s.Carbons = b
return value, nil
+ case "hideids":
+ b, err := toBool(value)
+ if err != nil {
+ return "", err
+ }
+ s.HideIds = b
+ return value, nil
}
return "", errors.New("Unknown session property")
diff --git a/persistence/sessions_test.go b/persistence/sessions_test.go
index df5e26d..8ca6f4f 100644
--- a/persistence/sessions_test.go
+++ b/persistence/sessions_test.go
@@ -57,6 +57,7 @@ func TestSessionToMap(t *testing.T) {
"asciiarrows": "false",
"oobmode": "true",
"carbons": "false",
+ "hideids": "false",
}
if !reflect.DeepEqual(m, sample) {
t.Errorf("Map does not match the sample: %v", m)
diff --git a/telegram/utils.go b/telegram/utils.go
index 905a97b..9a247c4 100644
--- a/telegram/utils.go
+++ b/telegram/utils.go
@@ -746,34 +746,51 @@ func (c *Client) countCharsInLines(lines *[]string) (count int) {
}
func (c *Client) messageToPrefix(message *client.Message, previewString string, fileString string, replyMsg *client.Message) (string, int, int) {
+ isPM, err := c.IsPM(message.ChatId)
+ if err != nil {
+ log.Errorf("Could not determine if chat is PM: %v", err)
+ }
+
var replyStart, replyEnd int
prefix := []string{}
// message direction
var directionChar string
- if c.Session.AsciiArrows {
- if message.IsOutgoing {
- directionChar = "> "
- } else {
- directionChar = "< "
- }
- } else {
- if message.IsOutgoing {
- directionChar = "➡ "
+ if !isPM || !gateway.MessageOutgoingPermission || !c.Session.Carbons {
+ if c.Session.AsciiArrows {
+ if message.IsOutgoing {
+ directionChar = "> "
+ } else {
+ directionChar = "< "
+ }
} else {
- directionChar = "⬅ "
+ if message.IsOutgoing {
+ directionChar = "➡ "
+ } else {
+ directionChar = "⬅ "
+ }
}
}
- prefix = append(prefix, directionChar+strconv.FormatInt(message.Id, 10))
+ if !isPM || !c.Session.HideIds {
+ prefix = append(prefix, directionChar+strconv.FormatInt(message.Id, 10))
+ }
// show sender in group chats
- if message.ChatId < 0 {
- prefix = append(prefix, c.formatSender(message))
+ if !isPM {
+ sender := c.formatSender(message)
+ if sender != "" {
+ prefix = append(prefix, sender)
+ }
}
// reply to
if message.ReplyToMessageId != 0 {
- replyStart = c.countCharsInLines(&prefix) + (len(prefix)-1)*len(messageHeaderSeparator)
+ if len(prefix) > 0 {
+ replyStart = c.countCharsInLines(&prefix) + (len(prefix)-1)*len(messageHeaderSeparator)
+ }
replyLine := "reply: " + c.formatMessage(message.ChatId, message.ReplyToMessageId, true, replyMsg)
prefix = append(prefix, replyLine)
- replyEnd = replyStart + len(replyLine) + len(messageHeaderSeparator)
+ replyEnd = replyStart + len(replyLine)
+ if len(prefix) > 0 {
+ replyEnd += len(messageHeaderSeparator)
+ }
}
if message.ForwardInfo != nil {
prefix = append(prefix, "fwd: "+c.formatForward(message.ForwardInfo))
@@ -856,10 +873,12 @@ func (c *Client) ProcessIncomingMessage(chatId int64, message *client.Message) {
if text != "" {
// \n if it is groupchat and message is not empty
- if chatId < 0 {
- newText.WriteString("\n")
- } else if chatId > 0 {
- newText.WriteString(" | ")
+ if prefix != "" {
+ if chatId < 0 {
+ newText.WriteString("\n")
+ } else if chatId > 0 {
+ newText.WriteString(" | ")
+ }
}
newText.WriteString(text)