Show some avatar for image packs

This commit is contained in:
Nicolas Werner 2021-12-13 06:00:32 +01:00
parent dae032172d
commit bb600dd3d1
No known key found for this signature in database
GPG key ID: C8D75E610773F2D9
3 changed files with 68 additions and 1 deletions

View file

@ -33,6 +33,7 @@ SingleImagePackModel::SingleImagePackModel(ImagePackInfo pack_, QObject *parent)
shortcodes.push_back(e.first);
connect(this, &SingleImagePackModel::addImage, this, &SingleImagePackModel::addImageCb);
connect(this, &SingleImagePackModel::avatarUploaded, this, &SingleImagePackModel::setAvatarUrl);
}
int
@ -215,6 +216,17 @@ SingleImagePackModel::setAvatarUrl(QString val)
}
}
QString
SingleImagePackModel::avatarUrl() const
{
if (!pack.pack->avatar_url.empty())
return QString::fromStdString(pack.pack->avatar_url);
else if (!pack.images.empty())
return QString::fromStdString(pack.images.begin()->second.url);
else
return "";
}
void
SingleImagePackModel::setStatekey(QString val)
{
@ -331,6 +343,35 @@ SingleImagePackModel::addStickers(QList<QUrl> files)
}
}
void
SingleImagePackModel::setAvatar(QUrl f)
{
auto file = QFile(f.toLocalFile());
if (!file.open(QFile::ReadOnly)) {
ChatPage::instance()->showNotification(tr("Failed to open image: %1").arg(f.toLocalFile()));
return;
}
auto bytes = file.readAll();
auto img = utils::readImage(bytes);
auto filename = f.fileName().toStdString();
http::client()->upload(
bytes.toStdString(),
QMimeDatabase().mimeTypeForFile(f.toLocalFile()).name().toStdString(),
filename,
[this, filename](const mtx::responses::ContentURI &uri, mtx::http::RequestErr e) {
if (e) {
ChatPage::instance()->showNotification(
tr("Failed to upload image: %1")
.arg(QString::fromStdString(e->matrix_error.error)));
return;
}
emit avatarUploaded(QString::fromStdString(uri.content_uri));
});
}
void
SingleImagePackModel::remove(int idx)
{
@ -356,4 +397,7 @@ SingleImagePackModel::addImageCb(std::string uri, std::string filename, mtx::com
shortcodes.push_back(filename);
endInsertRows();
if (this->pack.pack->avatar_url.empty())
this->setAvatarUrl(QString::fromStdString(uri));
}