mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-23 19:38:48 +03:00
Merge 50cdcc0376
into a3219c71d7
This commit is contained in:
commit
c990dd14a3
2 changed files with 48 additions and 11 deletions
|
@ -391,6 +391,9 @@ InputBar::send()
|
|||
{
|
||||
QInputMethod *im = QGuiApplication::inputMethod();
|
||||
im->commit();
|
||||
// If the input from the UI is only blanks or no text, this trigger should
|
||||
// be used to confirm media upload. If that is not the case however, but
|
||||
// but there are pending uploads, we fall into one of the cases seen later.
|
||||
if (text().trimmed().isEmpty()) {
|
||||
acceptUploads();
|
||||
return;
|
||||
|
@ -404,8 +407,18 @@ InputBar::send()
|
|||
updateTextContentProperties(text());
|
||||
if (containsIncompleteCommand_)
|
||||
return;
|
||||
if (commandName.isEmpty() || !command(commandName, args))
|
||||
message(text());
|
||||
if (unconfirmedUploads.empty()) {
|
||||
if (commandName.isEmpty() || !command(commandName, args)) {
|
||||
message(text());
|
||||
}
|
||||
} else {
|
||||
if (commandName.isEmpty()) {
|
||||
// This is a set of uploads with text
|
||||
acceptUploadsWithCaption(text());
|
||||
} else if (!command(commandName, args)) {
|
||||
message(text());
|
||||
}
|
||||
}
|
||||
|
||||
if (!wasEdit) {
|
||||
history_.push_front(QLatin1String(""));
|
||||
|
@ -683,6 +696,7 @@ void
|
|||
InputBar::image(const QString &filename,
|
||||
const std::optional<mtx::crypto::EncryptedFile> &file,
|
||||
const QString &url,
|
||||
const std::optional<QString> &caption,
|
||||
const QString &mime,
|
||||
uint64_t dsize,
|
||||
const QSize &dimensions,
|
||||
|
@ -696,9 +710,10 @@ InputBar::image(const QString &filename,
|
|||
image.info.mimetype = mime.toStdString();
|
||||
image.info.size = dsize;
|
||||
image.info.blurhash = blurhash.toStdString();
|
||||
image.body = filename.toStdString();
|
||||
image.info.h = dimensions.height();
|
||||
image.info.w = dimensions.width();
|
||||
// Depending on the input bar's situation, retrieve the text
|
||||
image.body = caption.has_value() ? caption.value().toStdString() : filename.toStdString();
|
||||
image.info.h = dimensions.height();
|
||||
image.info.w = dimensions.width();
|
||||
|
||||
if (file)
|
||||
image.file = file;
|
||||
|
@ -727,13 +742,14 @@ void
|
|||
InputBar::file(const QString &filename,
|
||||
const std::optional<mtx::crypto::EncryptedFile> &encryptedFile,
|
||||
const QString &url,
|
||||
const std::optional<QString> &caption,
|
||||
const QString &mime,
|
||||
uint64_t dsize)
|
||||
{
|
||||
mtx::events::msg::File file;
|
||||
file.info.mimetype = mime.toStdString();
|
||||
file.info.size = dsize;
|
||||
file.body = filename.toStdString();
|
||||
file.body = caption.has_value() ? caption.value().toStdString() : filename.toStdString();
|
||||
|
||||
if (encryptedFile)
|
||||
file.file = encryptedFile;
|
||||
|
@ -750,6 +766,7 @@ void
|
|||
InputBar::audio(const QString &filename,
|
||||
const std::optional<mtx::crypto::EncryptedFile> &file,
|
||||
const QString &url,
|
||||
const std::optional<QString> &caption,
|
||||
const QString &mime,
|
||||
uint64_t dsize,
|
||||
uint64_t duration)
|
||||
|
@ -757,8 +774,8 @@ InputBar::audio(const QString &filename,
|
|||
mtx::events::msg::Audio audio;
|
||||
audio.info.mimetype = mime.toStdString();
|
||||
audio.info.size = dsize;
|
||||
audio.body = filename.toStdString();
|
||||
audio.url = url.toStdString();
|
||||
audio.body = caption.has_value() ? caption.value().toStdString() : filename.toStdString();
|
||||
audio.url = url.toStdString();
|
||||
|
||||
if (duration > 0)
|
||||
audio.info.duration = duration;
|
||||
|
@ -778,6 +795,7 @@ void
|
|||
InputBar::video(const QString &filename,
|
||||
const std::optional<mtx::crypto::EncryptedFile> &file,
|
||||
const QString &url,
|
||||
const std::optional<QString> &caption,
|
||||
const QString &mime,
|
||||
uint64_t dsize,
|
||||
uint64_t duration,
|
||||
|
@ -792,7 +810,7 @@ InputBar::video(const QString &filename,
|
|||
video.info.mimetype = mime.toStdString();
|
||||
video.info.size = dsize;
|
||||
video.info.blurhash = blurhash.toStdString();
|
||||
video.body = filename.toStdString();
|
||||
video.body = caption.has_value() ? caption.value().toStdString() : filename.toStdString();
|
||||
|
||||
if (duration > 0)
|
||||
video.info.duration = duration;
|
||||
|
@ -1264,10 +1282,12 @@ InputBar::finalizeUpload(MediaUpload *upload, const QString &url)
|
|||
auto mimeClass = upload->mimeClass();
|
||||
auto size = upload->size();
|
||||
auto encryptedFile = upload->encryptedFile_();
|
||||
auto caption = upload->caption();
|
||||
if (mimeClass == u"image")
|
||||
image(filename,
|
||||
encryptedFile,
|
||||
url,
|
||||
caption,
|
||||
mime,
|
||||
size,
|
||||
upload->dimensions(),
|
||||
|
@ -1277,11 +1297,12 @@ InputBar::finalizeUpload(MediaUpload *upload, const QString &url)
|
|||
upload->thumbnailImg().size(),
|
||||
upload->blurhash());
|
||||
else if (mimeClass == u"audio")
|
||||
audio(filename, encryptedFile, url, mime, size, upload->duration());
|
||||
audio(filename, encryptedFile, url, caption, mime, size, upload->duration());
|
||||
else if (mimeClass == u"video")
|
||||
video(filename,
|
||||
encryptedFile,
|
||||
url,
|
||||
caption,
|
||||
mime,
|
||||
size,
|
||||
upload->duration(),
|
||||
|
@ -1292,7 +1313,7 @@ InputBar::finalizeUpload(MediaUpload *upload, const QString &url)
|
|||
upload->thumbnailImg().size(),
|
||||
upload->blurhash());
|
||||
else
|
||||
file(filename, encryptedFile, url, mime, size);
|
||||
file(filename, encryptedFile, url, caption, mime, size);
|
||||
|
||||
removeRunUpload(upload);
|
||||
}
|
||||
|
@ -1387,6 +1408,15 @@ InputBar::acceptUploads()
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
InputBar::acceptUploadsWithCaption(QString caption)
|
||||
{
|
||||
for (UploadHandle &upload : unconfirmedUploads) {
|
||||
upload->caption_ = std::optional(caption);
|
||||
}
|
||||
acceptUploads();
|
||||
}
|
||||
|
||||
void
|
||||
InputBar::declineUploads()
|
||||
{
|
||||
|
|
|
@ -86,6 +86,7 @@ public:
|
|||
return MediaType::File;
|
||||
}
|
||||
[[nodiscard]] QString url() const { return url_; }
|
||||
[[nodiscard]] std::optional<QString> caption() const { return caption_; }
|
||||
[[nodiscard]] QString mimetype() const { return mimetype_; }
|
||||
[[nodiscard]] QString mimeClass() const { return mimeClass_; }
|
||||
[[nodiscard]] QString filename() const { return originalFilename_; }
|
||||
|
@ -143,6 +144,7 @@ public:
|
|||
QString blurhash_;
|
||||
QString thumbnailUrl_;
|
||||
QString url_;
|
||||
std::optional<QString> caption_;
|
||||
std::optional<mtx::crypto::EncryptedFile> encryptedFile, thumbnailEncryptedFile;
|
||||
|
||||
QImage thumbnail_;
|
||||
|
@ -241,6 +243,7 @@ public slots:
|
|||
void sticker(QStringList descriptor);
|
||||
|
||||
void acceptUploads();
|
||||
void acceptUploadsWithCaption(QString);
|
||||
void declineUploads();
|
||||
|
||||
private slots:
|
||||
|
@ -269,6 +272,7 @@ private:
|
|||
void image(const QString &filename,
|
||||
const std::optional<mtx::crypto::EncryptedFile> &file,
|
||||
const QString &url,
|
||||
const std::optional<QString> &caption,
|
||||
const QString &mime,
|
||||
uint64_t dsize,
|
||||
const QSize &dimensions,
|
||||
|
@ -280,17 +284,20 @@ private:
|
|||
void file(const QString &filename,
|
||||
const std::optional<mtx::crypto::EncryptedFile> &encryptedFile,
|
||||
const QString &url,
|
||||
const std::optional<QString> &caption,
|
||||
const QString &mime,
|
||||
uint64_t dsize);
|
||||
void audio(const QString &filename,
|
||||
const std::optional<mtx::crypto::EncryptedFile> &file,
|
||||
const QString &url,
|
||||
const std::optional<QString> &caption,
|
||||
const QString &mime,
|
||||
uint64_t dsize,
|
||||
uint64_t duration);
|
||||
void video(const QString &filename,
|
||||
const std::optional<mtx::crypto::EncryptedFile> &file,
|
||||
const QString &url,
|
||||
const std::optional<QString> &caption,
|
||||
const QString &mime,
|
||||
uint64_t dsize,
|
||||
uint64_t duration,
|
||||
|
|
Loading…
Reference in a new issue