Convert normal post to long post when length exceeds maximum to resolve #39

This commit is contained in:
Morgan McMillian 2018-04-14 16:33:34 -07:00
parent 0dc89f87fb
commit 8461564c0c
6 changed files with 42 additions and 10 deletions

View file

@ -25,6 +25,7 @@ Sheet {
property alias input: postText
property alias text: postText.text
property int count: 256
property string counttext
signal sendPost(string text)
@ -62,14 +63,18 @@ Sheet {
sendAction.enabled = false;
}
count = 256 - postText.text.length
if (count < 0) sendAction.enabled = false;
if (count < 0) {
counttext = "longpost"
} else {
counttext = count.toString()
}
}
}
}
Container {
horizontalAlignment: HorizontalAlignment.Right
Label {
text: count.toString()
text: counttext
}
}
}

View file

@ -90,7 +90,7 @@ NavigationPane {
nav.push(page);
}
function sendReply(text, pid) {
pnut.sendReply(text, pid);
pnut.sendPost(text, pid);
}
function getUserName() {
return _app.setting("username");
@ -251,7 +251,7 @@ NavigationPane {
id: newPostSheet
onSendPost: {
console.log("send: " + text)
pnut.sendPost(text)
pnut.sendPost(text, 0)
}
},
WebViewSheet {

View file

@ -44,7 +44,7 @@ Page {
}
]
function sendReply(text, pid) {
pnut.sendReply(text, pid);
pnut.sendPost(text, pid);
}
function getUserName() {
return _app.setting("username")

View file

@ -20,6 +20,7 @@
#include "Pnut.h"
#include "globals.h"
#include <QDebug>
#include <QDateTime>
#include <bb/data/JsonDataAccess>
const QString Pnut::PNUT_API_ROOT = QString("https://api.pnut.io/v0");
@ -352,11 +353,37 @@ void Pnut::getStream(QString endpoint, Pnut::RequestType rtype)
getRequest(url, parameters, req_id);
}
void Pnut::sendPost(QString text)
void Pnut::sendPost(QString text, int pid=0)
{
QByteArray post;
QVariantMap map;
QVariantList raw;
if (text.length() > 254)
{
QVariantMap longpost;
QVariantMap rawobj;
longpost["title"] = "";
longpost["body"] = text;
longpost["tstamp"] = QDateTime::currentMSecsSinceEpoch();
rawobj["type"] = "nl.chimpnut.blog.post";
rawobj["value"] = longpost;
raw.append(rawobj);
text.truncate(80);
text = text + "... - http://chimpnut.nl/u/";
text = text + m_appSettings->value("username").toString();
text = text + "/lp/{object_id} - #longpost";
}
map["text"] = text;
if (pid > 0)
{
map["reply_to"] = pid;
}
if (raw.length() > 0)
{
map["raw"] = raw;
}
QVariant data(map);
bb::data::JsonDataAccess jda;
jda.saveToBuffer(data, &post);

View file

@ -67,7 +67,7 @@ public:
Q_INVOKABLE void authorize();
Q_INVOKABLE void getStream(QString endpoint, Pnut::RequestType rtype);
Q_INVOKABLE void sendPost(QString text);
Q_INVOKABLE void sendPost(QString text, int pid);
Q_INVOKABLE void sendReply(QString text, int pid);
Q_INVOKABLE void getUser(QString uid);
Q_INVOKABLE void followUser(QString uid);

View file

@ -25,17 +25,17 @@
<context>
<name>NewPostSheet</name>
<message>
<location filename="../assets/NewPostSheet.qml" line="35"/>
<location filename="../assets/NewPostSheet.qml" line="36"/>
<source>Send</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../assets/NewPostSheet.qml" line="44"/>
<location filename="../assets/NewPostSheet.qml" line="45"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../assets/NewPostSheet.qml" line="50"/>
<location filename="../assets/NewPostSheet.qml" line="51"/>
<source>New Post</source>
<translation type="unfinished"></translation>
</message>