[smuxi: 7/10] Engine-Campfire: show tweet pastes
- From: Mirco M. M. Bauer <mmmbauer src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [smuxi: 7/10] Engine-Campfire: show tweet pastes
- Date: Sun, 23 Aug 2015 11:09:31 +0000 (UTC)
commit 41dd2c01837f042f025d2b149dcea40b460ad5a9
Author: Carlos MartÃn Nieto <cmn dwim me>
Date: Sat Aug 22 17:12:03 2015 +0200
Engine-Campfire: show tweet pastes
The server sends a specific type of message when someone pastes a tweet,
which contains information which we can show instead of 'unkown action'.
.../Protocols/Campfire/CampfireProtocolManager.cs | 24 +++++++++++++++-----
src/Engine-Campfire/Protocols/Campfire/DTO.cs | 8 ++++++
2 files changed, 26 insertions(+), 6 deletions(-)
---
diff --git a/src/Engine-Campfire/Protocols/Campfire/CampfireProtocolManager.cs
b/src/Engine-Campfire/Protocols/Campfire/CampfireProtocolManager.cs
index d2d68ba..f06ee14 100644
--- a/src/Engine-Campfire/Protocols/Campfire/CampfireProtocolManager.cs
+++ b/src/Engine-Campfire/Protocols/Campfire/CampfireProtocolManager.cs
@@ -390,6 +390,11 @@ namespace Smuxi.Engine
bld.AppendText(action);
}
+ bool AlreadyPosted(PersonModel person, int messageId)
+ {
+ return person == Me && messageId <= LastSentId;
+ }
+
void ShowMessage(object sender, MessageReceivedEventArgs args)
{
var message = args.Message;
@@ -443,6 +448,15 @@ namespace Smuxi.Engine
case Campfire.MessageType.UploadMessage:
FormatUpload(bld, person, chat, message);
break;
+ case Campfire.MessageType.TweetMessage:
+ if (AlreadyPosted(person, message.Id))
+ return;
+
+ var tweet = message.Tweet;
+ // TRANSLATOR: {0} is the twitter username, {1} the tweet text
+ FormatEvent(bld, person,
+ String.Format(_("has pasted a tweet by {0}: {1}"), tweet.Author_Username,
tweet.Message));
+ break;
case Campfire.MessageType.TextMessage:
case Campfire.MessageType.PasteMessage:
processed = false;
@@ -457,19 +471,17 @@ namespace Smuxi.Engine
return;
}
- bool mine = person == Me;
-
- // Don't double-post the messages we've sent
- if (mine && message.Id <= LastSentId)
+ if (AlreadyPosted(person, message.Id))
return;
+ bool mine = person == Me;
+
if (mine)
bld.AppendSenderPrefix(Me);
else
bld.AppendNick(person).AppendSpace();
- if (message.Type == Campfire.MessageType.TextMessage ||
- message.Type == Campfire.MessageType.TweetMessage) {
+ if (message.Type == Campfire.MessageType.TextMessage) {
bld.AppendMessage(message.Body);
} else if (message.Type == Campfire.MessageType.PasteMessage) {
bld.AppendText("\n");
diff --git a/src/Engine-Campfire/Protocols/Campfire/DTO.cs b/src/Engine-Campfire/Protocols/Campfire/DTO.cs
index c781b93..60b7f8e 100644
--- a/src/Engine-Campfire/Protocols/Campfire/DTO.cs
+++ b/src/Engine-Campfire/Protocols/Campfire/DTO.cs
@@ -75,6 +75,13 @@ namespace Smuxi.Engine.Campfire
public string body { get; set; }
}
+ internal class Tweet {
+ public long Id { get; set; }
+ public string Message { get; set; }
+ public string Author_Username { get; set; }
+ public string Author_Avatar_Url { get; set; }
+ }
+
internal class Message {
public int Id { get; set; }
public string Body { get; set; }
@@ -83,6 +90,7 @@ namespace Smuxi.Engine.Campfire
public DateTimeOffset Created_At { get; set; }
public MessageType Type { get; set; }
public bool Starred { get; set; }
+ public Tweet Tweet { get; set; }
}
internal class Upload {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]