From d3778c22e4f6fb787c148d31a3dd4c14ac3859fa Mon Sep 17 00:00:00 2001 From: Mariotaku Lee Date: Sun, 30 Apr 2017 11:18:20 +0800 Subject: [PATCH] fixed GNU social media preview --- .../api/gnusocial/AttathmentExtensions.kt | 48 +++++++++++++++++++ .../model/util/ParcelableMediaUtils.kt | 26 ++-------- 2 files changed, 51 insertions(+), 23 deletions(-) create mode 100644 twidere/src/main/kotlin/org/mariotaku/twidere/extension/model/api/gnusocial/AttathmentExtensions.kt diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/extension/model/api/gnusocial/AttathmentExtensions.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/extension/model/api/gnusocial/AttathmentExtensions.kt new file mode 100644 index 000000000..1e3fa62ff --- /dev/null +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/extension/model/api/gnusocial/AttathmentExtensions.kt @@ -0,0 +1,48 @@ +/* + * Twidere - Twitter client for Android + * + * Copyright (C) 2012-2017 Mariotaku Lee + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package org.mariotaku.twidere.extension.model.api.gnusocial + +import org.mariotaku.microblog.library.gnusocial.model.Attachment +import org.mariotaku.twidere.model.ParcelableMedia + +/** + * Created by mariotaku on 2017/4/30. + */ +fun Attachment.toParcelable(externalUrl: String) : ParcelableMedia? { + val mimeType = mimetype ?: return null + val result = ParcelableMedia() + + if (mimeType.startsWith("image/")) { + result.type = ParcelableMedia.Type.IMAGE + } else if (mimeType.startsWith("video/")) { + result.type = ParcelableMedia.Type.VIDEO + } else { + // https://github.com/TwidereProject/Twidere-Android/issues/729 + // Skip unsupported attachment + return null + } + result.width = width + result.height = height + result.url = externalUrl ?: url + result.page_url = externalUrl ?: url + result.media_url = url + result.preview_url = largeThumbUrl + return result +} \ No newline at end of file diff --git a/twidere/src/main/kotlin/org/mariotaku/twidere/model/util/ParcelableMediaUtils.kt b/twidere/src/main/kotlin/org/mariotaku/twidere/model/util/ParcelableMediaUtils.kt index f24f9d0af..e516f81b8 100644 --- a/twidere/src/main/kotlin/org/mariotaku/twidere/model/util/ParcelableMediaUtils.kt +++ b/twidere/src/main/kotlin/org/mariotaku/twidere/model/util/ParcelableMediaUtils.kt @@ -1,10 +1,10 @@ package org.mariotaku.twidere.model.util -import android.text.TextUtils import org.mariotaku.ktextension.addAllTo import org.mariotaku.ktextension.isNullOrEmpty import org.mariotaku.ktextension.toIntOr import org.mariotaku.microblog.library.twitter.model.* +import org.mariotaku.twidere.extension.model.api.gnusocial.toParcelable import org.mariotaku.twidere.extension.model.toParcelable import org.mariotaku.twidere.model.ParcelableMedia import org.mariotaku.twidere.model.ParcelableStatus @@ -88,27 +88,7 @@ object ParcelableMediaUtils { private fun fromAttachments(status: Status): Array { val attachments = status.attachments ?: return emptyArray() val externalUrl = status.externalUrl - return attachments.mapNotNull { attachment -> - val mimeType = attachment.mimetype ?: return@mapNotNull null - val media = ParcelableMedia() - - if (mimeType.startsWith("image/")) { - media.type = ParcelableMedia.Type.IMAGE - } else if (mimeType.startsWith("video/")) { - media.type = ParcelableMedia.Type.VIDEO - } else { - // https://github.com/TwidereProject/Twidere-Android/issues/729 - // Skip unsupported attachment - return@mapNotNull null - } - media.width = attachment.width - media.height = attachment.height - media.url = if (TextUtils.isEmpty(externalUrl)) attachment.url else externalUrl - media.page_url = if (TextUtils.isEmpty(externalUrl)) attachment.url else externalUrl - media.media_url = attachment.url - media.preview_url = attachment.largeThumbUrl - return@mapNotNull null - }.toTypedArray() + return attachments.mapNotNull { it.toParcelable(externalUrl) }.toTypedArray() } private fun fromCard(card: CardEntity?, urlEntities: Array?, @@ -190,7 +170,7 @@ object ParcelableMediaUtils { @JvmStatic private fun CardEntity.StringValue.checkUrl(): Boolean { val value = this.value ?: return false - return value != null && (value.startsWith("http://") || value.startsWith("https://")) + return value.startsWith("http://") || value.startsWith("https://") } fun getTypeInt(type: String): Int {