From 5831c6bd1b1ffa90510ebc5146a62e50758f25fb Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Sat, 30 Mar 2019 22:50:12 -0400 Subject: Prepend v to bugsnag tags, resolves #1367 --- app/src/main/kotlin/com/pitchedapps/frost/utils/BuildUtils.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/src/main/kotlin') diff --git a/app/src/main/kotlin/com/pitchedapps/frost/utils/BuildUtils.kt b/app/src/main/kotlin/com/pitchedapps/frost/utils/BuildUtils.kt index 33da56f2..65ef3056 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/utils/BuildUtils.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/utils/BuildUtils.kt @@ -30,7 +30,7 @@ object BuildUtils { fun match(version: String): Data? { val regex = Regex("([0-9]+\\.[0-9]+\\.[0-9]+)-?(.*?)") val result = regex.matchEntire(version)?.groupValues ?: return null - return Data(result[1], result[2]) + return Data("v${result[1]}", result[2]) } fun getAllStages(): Array = -- cgit v1.2.3 From 5b470546fd478a322b121ec60a1f4c05d4d61ff6 Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Sat, 30 Mar 2019 22:59:57 -0400 Subject: Filter notif titles as well from settings, resolves #1333 --- .../com/pitchedapps/frost/services/FrostNotifications.kt | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'app/src/main/kotlin') diff --git a/app/src/main/kotlin/com/pitchedapps/frost/services/FrostNotifications.kt b/app/src/main/kotlin/com/pitchedapps/frost/services/FrostNotifications.kt index f66f77e2..54a9f8ae 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/services/FrostNotifications.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/services/FrostNotifications.kt @@ -126,9 +126,19 @@ enum class NotificationType( L.v { "$name notification data not found" } return -1 } + + /** + * Checks that the text doesn't contain any blacklisted keywords + */ + fun validText(text: String?): Boolean { + val t = text ?: return true + return Prefs.notificationKeywords.none { + t.contains(it, true) + } + } + val notifContents = response.data.getUnreadNotifications(data).filter { notif -> - val text = notif.text - Prefs.notificationKeywords.none { text.contains(it, true) } + validText(notif.title) && validText(notif.text) } if (notifContents.isEmpty()) return 0 val userId = data.id -- cgit v1.2.3 From a49021c096f18cfef2fa54b2369ed044341187c5 Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Sun, 31 Mar 2019 22:44:06 -0400 Subject: Remove round icon settings --- .../com/pitchedapps/frost/glide/RoundCornerTransformation.kt | 5 ++--- app/src/main/kotlin/com/pitchedapps/frost/injectors/CssAssets.kt | 2 +- app/src/main/kotlin/com/pitchedapps/frost/settings/Appearance.kt | 7 ------- app/src/main/kotlin/com/pitchedapps/frost/utils/Prefs.kt | 2 -- app/src/main/kotlin/com/pitchedapps/frost/web/DebugWebView.kt | 1 - .../main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt | 1 - app/src/web/assets/css/components/round_icons.css | 4 ---- app/src/web/assets/css/components/round_icons.scss | 4 ---- 8 files changed, 3 insertions(+), 23 deletions(-) delete mode 100644 app/src/web/assets/css/components/round_icons.css delete mode 100644 app/src/web/assets/css/components/round_icons.scss (limited to 'app/src/main/kotlin') diff --git a/app/src/main/kotlin/com/pitchedapps/frost/glide/RoundCornerTransformation.kt b/app/src/main/kotlin/com/pitchedapps/frost/glide/RoundCornerTransformation.kt index 564224ea..b63c5588 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/glide/RoundCornerTransformation.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/glide/RoundCornerTransformation.kt @@ -33,7 +33,7 @@ import java.security.MessageDigest class RoundCornerTransformation : BitmapTransformation() { override fun updateDiskCacheKey(messageDigest: MessageDigest) { - messageDigest.update("FrostRoundCornerTransform-${Prefs.showRoundedIcons}".toByteArray()) + messageDigest.update("FrostRoundCornerTransform".toByteArray()) } override fun transform(pool: BitmapPool, toTransform: Bitmap, outWidth: Int, outHeight: Int): Bitmap { @@ -44,8 +44,7 @@ class RoundCornerTransformation : BitmapTransformation() { val bitmap = pool.get(width, height, Bitmap.Config.ARGB_8888) bitmap.setHasAlpha(true) - val radius = Math.min(width, height).toFloat() / - (if (Prefs.showRoundedIcons) 2f else 10f) + val radius = Math.min(width, height) * 0.5f val canvas = Canvas(bitmap) val paint = Paint() diff --git a/app/src/main/kotlin/com/pitchedapps/frost/injectors/CssAssets.kt b/app/src/main/kotlin/com/pitchedapps/frost/injectors/CssAssets.kt index a466feec..e7efbf2a 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/injectors/CssAssets.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/injectors/CssAssets.kt @@ -41,7 +41,7 @@ import java.util.Locale * The enum name must match the css file name */ enum class CssAssets(val folder: String = THEME_FOLDER) : InjectorContract { - MATERIAL_LIGHT, MATERIAL_DARK, MATERIAL_AMOLED, MATERIAL_GLASS, CUSTOM, ROUND_ICONS("components") + MATERIAL_LIGHT, MATERIAL_DARK, MATERIAL_AMOLED, MATERIAL_GLASS, CUSTOM ; @VisibleForTesting diff --git a/app/src/main/kotlin/com/pitchedapps/frost/settings/Appearance.kt b/app/src/main/kotlin/com/pitchedapps/frost/settings/Appearance.kt index 1b1ca796..c8431464 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/settings/Appearance.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/settings/Appearance.kt @@ -155,13 +155,6 @@ fun SettingsActivity.getAppearancePrefs(): KPrefAdapterBuilder.() -> Unit = { onClick = { launchTabCustomizerActivity() } } - checkbox(R.string.rounded_icons, Prefs::showRoundedIcons, { - Prefs.showRoundedIcons = it - setFrostResult(REQUEST_REFRESH) - }) { - descRes = R.string.rounded_icons_desc - } - checkbox(R.string.tint_nav, Prefs::tintNavBar, { Prefs.tintNavBar = it frostNavigationBar() diff --git a/app/src/main/kotlin/com/pitchedapps/frost/utils/Prefs.kt b/app/src/main/kotlin/com/pitchedapps/frost/utils/Prefs.kt index 9a63f527..391d422a 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/utils/Prefs.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/utils/Prefs.kt @@ -116,8 +116,6 @@ object Prefs : KPref() { var aggressiveRecents: Boolean by kpref("aggressive_recents", false) - var showRoundedIcons: Boolean by kpref("rounded_icons", true) - var showComposer: Boolean by kpref("status_composer_feed", true) var showSuggestedFriends: Boolean by kpref("suggested_friends_feed", true) diff --git a/app/src/main/kotlin/com/pitchedapps/frost/web/DebugWebView.kt b/app/src/main/kotlin/com/pitchedapps/frost/web/DebugWebView.kt index 6b186b1c..80edd62e 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/web/DebugWebView.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/web/DebugWebView.kt @@ -102,7 +102,6 @@ class DebugWebView @JvmOverloads constructor( injectBackgroundColor() if (url.isFacebookUrl) view.jsInject( - CssAssets.ROUND_ICONS.maybe(Prefs.showRoundedIcons), // CssHider.CORE, CssHider.COMPOSER.maybe(!Prefs.showComposer), CssHider.STORIES.maybe(!Prefs.showStories), diff --git a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt index e162f9da..bac27010 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt @@ -91,7 +91,6 @@ open class FrostWebViewClient(val web: FrostWebView) : BaseWebViewClient() { injectBackgroundColor() if (url.isFacebookUrl) view.jsInject( - CssAssets.ROUND_ICONS.maybe(Prefs.showRoundedIcons), // CssHider.CORE, CssHider.HEADER, CssHider.COMPOSER.maybe(!Prefs.showComposer), diff --git a/app/src/web/assets/css/components/round_icons.css b/app/src/web/assets/css/components/round_icons.css deleted file mode 100644 index 5477f7c0..00000000 --- a/app/src/web/assets/css/components/round_icons.css +++ /dev/null @@ -1,4 +0,0 @@ -#threadlist_rows, [role*=presentation] img._1e_c, -i.img.profpic:not(._1_0m):not(#MStoriesTray), ._42b6._42b6._42b6, ._5i9c.img, img._2cu2, i.img.l, [id*=threadlist] i.img:not(._1_0m) { - border-radius: 50% !important; -} diff --git a/app/src/web/assets/css/components/round_icons.scss b/app/src/web/assets/css/components/round_icons.scss deleted file mode 100644 index b4662e60..00000000 --- a/app/src/web/assets/css/components/round_icons.scss +++ /dev/null @@ -1,4 +0,0 @@ -#threadlist_rows, [role*=presentation] img._1e_c, -i.img.profpic:not(._1_0m):not(#MStoriesTray), ._42b6._42b6._42b6, ._5i9c.img, img._2cu2, i.img.l, [id*=threadlist] i.img:not(._1_0m) { - border-radius: 50% !important; -} -- cgit v1.2.3 From fc375400411de3e7113a296b618940ef7b2b655c Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Sun, 31 Mar 2019 22:51:32 -0400 Subject: Remove round transformations --- .../pitchedapps/frost/activities/LoginActivity.kt | 2 +- .../com/pitchedapps/frost/glide/GlideUtils.kt | 2 - .../frost/glide/RoundCornerTransformation.kt | 60 ---------------------- .../com/pitchedapps/frost/iitems/MenuIItem.kt | 2 +- .../pitchedapps/frost/iitems/NotificationIItem.kt | 2 +- .../com/pitchedapps/frost/views/AccountItem.kt | 2 +- 6 files changed, 4 insertions(+), 66 deletions(-) delete mode 100644 app/src/main/kotlin/com/pitchedapps/frost/glide/RoundCornerTransformation.kt (limited to 'app/src/main/kotlin') diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/LoginActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/LoginActivity.kt index f3eb8fe6..97abf5a2 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/activities/LoginActivity.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/LoginActivity.kt @@ -145,7 +145,7 @@ class LoginActivity : BaseActivity() { private suspend fun loadProfile(id: Long): Boolean = withMainContext { suspendCancellableCoroutine { cont -> profileLoader.load(profilePictureUrl(id)) - .transform(FrostGlide.roundCorner).listener(object : RequestListener { + .transform(FrostGlide.circleCrop).listener(object : RequestListener { override fun onResourceReady( resource: Drawable?, model: Any?, diff --git a/app/src/main/kotlin/com/pitchedapps/frost/glide/GlideUtils.kt b/app/src/main/kotlin/com/pitchedapps/frost/glide/GlideUtils.kt index 870e2ccd..537ad89c 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/glide/GlideUtils.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/glide/GlideUtils.kt @@ -38,8 +38,6 @@ import okhttp3.Response * Each caller will generate a new one upon request */ object FrostGlide { - val roundCorner - get() = RoundCornerTransformation() val circleCrop get() = CircleCrop() } diff --git a/app/src/main/kotlin/com/pitchedapps/frost/glide/RoundCornerTransformation.kt b/app/src/main/kotlin/com/pitchedapps/frost/glide/RoundCornerTransformation.kt deleted file mode 100644 index b63c5588..00000000 --- a/app/src/main/kotlin/com/pitchedapps/frost/glide/RoundCornerTransformation.kt +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2018 Allan Wang - * - * 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 com.pitchedapps.frost.glide - -import android.graphics.Bitmap -import android.graphics.BitmapShader -import android.graphics.Canvas -import android.graphics.Paint -import android.graphics.RectF -import android.graphics.Shader -import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool -import com.bumptech.glide.load.resource.bitmap.BitmapTransformation -import com.pitchedapps.frost.utils.Prefs -import java.security.MessageDigest - -/** - * Created by Allan Wang on 27/12/17. - */ -class RoundCornerTransformation : BitmapTransformation() { - - override fun updateDiskCacheKey(messageDigest: MessageDigest) { - messageDigest.update("FrostRoundCornerTransform".toByteArray()) - } - - override fun transform(pool: BitmapPool, toTransform: Bitmap, outWidth: Int, outHeight: Int): Bitmap { - - val width = toTransform.width - val height = toTransform.height - - val bitmap = pool.get(width, height, Bitmap.Config.ARGB_8888) - bitmap.setHasAlpha(true) - - val radius = Math.min(width, height) * 0.5f - - val canvas = Canvas(bitmap) - val paint = Paint() - paint.isAntiAlias = true - paint.shader = BitmapShader(toTransform, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP) - canvas.drawRoundRect( - RectF(0f, 0f, width.toFloat(), height.toFloat()), - radius, radius, paint - ) - - return bitmap - } -} diff --git a/app/src/main/kotlin/com/pitchedapps/frost/iitems/MenuIItem.kt b/app/src/main/kotlin/com/pitchedapps/frost/iitems/MenuIItem.kt index 651a4a2a..d20e8cde 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/iitems/MenuIItem.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/iitems/MenuIItem.kt @@ -59,7 +59,7 @@ class MenuContentIItem(val data: MenuItem) : if (iconUrl != null) GlideApp.with(itemView) .load(iconUrl) - .transform(FrostGlide.roundCorner) + .transform(FrostGlide.circleCrop) .into(icon.visible()) else icon.gone() diff --git a/app/src/main/kotlin/com/pitchedapps/frost/iitems/NotificationIItem.kt b/app/src/main/kotlin/com/pitchedapps/frost/iitems/NotificationIItem.kt index e8332955..8b196a64 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/iitems/NotificationIItem.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/iitems/NotificationIItem.kt @@ -106,7 +106,7 @@ class NotificationIItem(val notification: FrostNotif, val cookie: String) : val glide = glide glide.load(notif.img) - .transform(FrostGlide.roundCorner) + .transform(FrostGlide.circleCrop) .into(avatar) if (notif.thumbnailUrl != null) glide.load(notif.thumbnailUrl).into(thumbnail.visible()) diff --git a/app/src/main/kotlin/com/pitchedapps/frost/views/AccountItem.kt b/app/src/main/kotlin/com/pitchedapps/frost/views/AccountItem.kt index d7a7de0e..d60ea7ed 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/views/AccountItem.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/views/AccountItem.kt @@ -53,7 +53,7 @@ class AccountItem(val cookie: CookieModel?) : KauIItem { + .transform(FrostGlide.circleCrop).listener(object : RequestListener { override fun onResourceReady( resource: Drawable?, model: Any?, -- cgit v1.2.3 From f7ad18ff7f1bd10bef45542b4ea400f2957cbf3e Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Sun, 31 Mar 2019 23:09:36 -0400 Subject: Apply spotless --- app/src/main/kotlin/com/pitchedapps/frost/settings/Appearance.kt | 1 - app/src/main/kotlin/com/pitchedapps/frost/web/DebugWebView.kt | 1 - app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt | 1 - docs/Changelog.md | 2 ++ 4 files changed, 2 insertions(+), 3 deletions(-) (limited to 'app/src/main/kotlin') diff --git a/app/src/main/kotlin/com/pitchedapps/frost/settings/Appearance.kt b/app/src/main/kotlin/com/pitchedapps/frost/settings/Appearance.kt index c8431464..a6437123 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/settings/Appearance.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/settings/Appearance.kt @@ -28,7 +28,6 @@ import com.pitchedapps.frost.enums.Theme import com.pitchedapps.frost.injectors.CssAssets import com.pitchedapps.frost.utils.Prefs import com.pitchedapps.frost.utils.REQUEST_NAV -import com.pitchedapps.frost.utils.REQUEST_REFRESH import com.pitchedapps.frost.utils.REQUEST_TEXT_ZOOM import com.pitchedapps.frost.utils.frostEvent import com.pitchedapps.frost.utils.frostNavigationBar diff --git a/app/src/main/kotlin/com/pitchedapps/frost/web/DebugWebView.kt b/app/src/main/kotlin/com/pitchedapps/frost/web/DebugWebView.kt index 80edd62e..90c4c7e2 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/web/DebugWebView.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/web/DebugWebView.kt @@ -25,7 +25,6 @@ import android.view.View import android.webkit.WebView import ca.allanwang.kau.utils.withAlpha import com.pitchedapps.frost.facebook.USER_AGENT_BASIC -import com.pitchedapps.frost.injectors.CssAssets import com.pitchedapps.frost.injectors.CssHider import com.pitchedapps.frost.injectors.jsInject import com.pitchedapps.frost.utils.L diff --git a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt index bac27010..c5c4ad28 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt @@ -27,7 +27,6 @@ import com.pitchedapps.frost.facebook.FB_URL_BASE import com.pitchedapps.frost.facebook.FbCookie import com.pitchedapps.frost.facebook.FbItem import com.pitchedapps.frost.facebook.formattedFbUrl -import com.pitchedapps.frost.injectors.CssAssets import com.pitchedapps.frost.injectors.CssHider import com.pitchedapps.frost.injectors.JsActions import com.pitchedapps.frost.injectors.JsAssets diff --git a/docs/Changelog.md b/docs/Changelog.md index f81b2d20..99ba22d2 100644 --- a/docs/Changelog.md +++ b/docs/Changelog.md @@ -4,6 +4,8 @@ * Add ability to hide stories * Remove fbclid from urls * Apply notification keyword filter to title as well +* Remove round icon settings as they are the default in Facebook +* Update theme ## v2.2.2 * New marketplace shortcut -- cgit v1.2.3 From c3ad96af1db7b457005b13f693ee855bbbc7a80b Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Tue, 2 Apr 2019 23:34:49 -0400 Subject: Show header when not jewel nav --- .idea/inspectionProfiles/profiles_settings.xml | 6 ++++++ .../kotlin/com/pitchedapps/frost/injectors/CssHider.kt | 2 +- .../kotlin/com/pitchedapps/frost/injectors/JsAssets.kt | 2 +- .../com/pitchedapps/frost/web/FrostWebViewClients.kt | 1 - .../kotlin/com/pitchedapps/frost/web/LoginWebView.kt | 1 - app/src/web/assets/js/header_hider.js | 12 ------------ app/src/web/assets/js/header_hider.ts | 17 ----------------- 7 files changed, 8 insertions(+), 33 deletions(-) create mode 100644 .idea/inspectionProfiles/profiles_settings.xml delete mode 100644 app/src/web/assets/js/header_hider.js delete mode 100644 app/src/web/assets/js/header_hider.ts (limited to 'app/src/main/kotlin') diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 00000000..30d5fbc6 --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/kotlin/com/pitchedapps/frost/injectors/CssHider.kt b/app/src/main/kotlin/com/pitchedapps/frost/injectors/CssHider.kt index 292b7ff5..891a1dbf 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/injectors/CssHider.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/injectors/CssHider.kt @@ -26,7 +26,7 @@ import android.webkit.WebView enum class CssHider(vararg val items: String) : InjectorContract { CORE("[data-sigil=m_login_upsell]", "[role=progressbar]"), HEADER( - "#header", "#mJewelNav", "[data-sigil=MTopBlueBarHeader]", + "#header:not(.mFuturePageHeader):not(.titled)", "#mJewelNav", "[data-sigil=MTopBlueBarHeader]", "#header-notices", "[data-sigil*=m-promo-jewel-header]" ), ADS( diff --git a/app/src/main/kotlin/com/pitchedapps/frost/injectors/JsAssets.kt b/app/src/main/kotlin/com/pitchedapps/frost/injectors/JsAssets.kt index e0be7977..ad42418e 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/injectors/JsAssets.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/injectors/JsAssets.kt @@ -33,7 +33,7 @@ import java.util.Locale * The enum name must match the css file name */ enum class JsAssets : InjectorContract { - MENU, CLICK_A, CONTEXT_A, MEDIA, HEADER_BADGES, HEADER_HIDER, TEXTAREA_LISTENER, NOTIF_MSG, + MENU, CLICK_A, CONTEXT_A, MEDIA, HEADER_BADGES, TEXTAREA_LISTENER, NOTIF_MSG, DOCUMENT_WATCHER ; diff --git a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt index c5c4ad28..003ed7f9 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostWebViewClients.kt @@ -105,7 +105,6 @@ open class FrostWebViewClient(val web: FrostWebView) : BaseWebViewClient() { JsAssets.CLICK_A, CssHider.ADS.maybe(!Prefs.showFacebookAds), JsAssets.CONTEXT_A, -// JsAssets.HEADER_HIDER, JsAssets.MEDIA ) else diff --git a/app/src/main/kotlin/com/pitchedapps/frost/web/LoginWebView.kt b/app/src/main/kotlin/com/pitchedapps/frost/web/LoginWebView.kt index c21ce93b..1c300b03 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/web/LoginWebView.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/web/LoginWebView.kt @@ -98,7 +98,6 @@ class LoginWebView @JvmOverloads constructor( view.setBackgroundColor(Color.TRANSPARENT) if (url.isFacebookUrl) view.jsInject( - JsAssets.HEADER_HIDER, CssHider.CORE, Prefs.themeInjector ) diff --git a/app/src/web/assets/js/header_hider.js b/app/src/web/assets/js/header_hider.js deleted file mode 100644 index faa9f66d..00000000 --- a/app/src/web/assets/js/header_hider.js +++ /dev/null @@ -1,12 +0,0 @@ -"use strict"; -(function () { - var header = document.querySelector('#header'); - if (!header) { - return; - } - var jewel = header.querySelector('#mJewelNav'); - if (!jewel) { - return; - } - header.style.display = 'none'; -}).call(undefined); diff --git a/app/src/web/assets/js/header_hider.ts b/app/src/web/assets/js/header_hider.ts deleted file mode 100644 index 1a8f27f2..00000000 --- a/app/src/web/assets/js/header_hider.ts +++ /dev/null @@ -1,17 +0,0 @@ -(function () { - const header = document.querySelector('#header'); - - if (!header) { - return - } - - const jewel = header.querySelector('#mJewelNav'); - - if (!jewel) { - return - } - - (header).style.display = 'none' -}).call(undefined); - - -- cgit v1.2.3 From d0b4471667a3979deddf2c1e947cff301fb4d254 Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Thu, 4 Apr 2019 21:28:41 -0400 Subject: Merge mute specific fixes (#1386) * Merge mute specific fixes * Remove version tag in user agent * Add extra forward slash * Update kau --- app/src/main/kotlin/com/pitchedapps/frost/facebook/FbConst.kt | 4 ++-- app/src/main/kotlin/com/pitchedapps/frost/views/FrostWebView.kt | 1 + app/src/main/kotlin/com/pitchedapps/frost/web/DebugWebView.kt | 6 +++--- docs/Changelog.md | 3 +++ gradle.properties | 2 +- 5 files changed, 10 insertions(+), 6 deletions(-) (limited to 'app/src/main/kotlin') diff --git a/app/src/main/kotlin/com/pitchedapps/frost/facebook/FbConst.kt b/app/src/main/kotlin/com/pitchedapps/frost/facebook/FbConst.kt index 1d6937f7..8bca6b67 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/facebook/FbConst.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/facebook/FbConst.kt @@ -22,7 +22,7 @@ package com.pitchedapps.frost.facebook const val FACEBOOK_COM = "facebook.com" const val FBCDN_NET = "fbcdn.net" -const val HTTPS_FACEBOOK_COM = "https://$FACEBOOK_COM" +const val HTTPS_FACEBOOK_COM = "https://$FACEBOOK_COM/" const val FB_URL_BASE = "https://m.$FACEBOOK_COM/" fun profilePictureUrl(id: Long) = "https://graph.facebook.com/$id/picture?type=large" const val FB_LOGIN_URL = "${FB_URL_BASE}login" @@ -30,7 +30,7 @@ const val FB_HOME_URL = "${FB_URL_BASE}home.php" // Default user agent const val USER_AGENT_FULL = - "Mozilla/5.0 (Linux; Android 7.1; Mi A1 Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.83 Mobile Safari/537.36" + "Mozilla/5.0 (Linux; Android 8.0.0; ONEPLUS A3000) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.90 Mobile Safari/537.36" // Basic user agent; non mobile version const val USER_AGENT_BASIC = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36" diff --git a/app/src/main/kotlin/com/pitchedapps/frost/views/FrostWebView.kt b/app/src/main/kotlin/com/pitchedapps/frost/views/FrostWebView.kt index 0e9d94e6..37b2234d 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/views/FrostWebView.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/views/FrostWebView.kt @@ -70,6 +70,7 @@ class FrostWebView @JvmOverloads constructor( else USER_AGENT_FULL with(settings) { javaScriptEnabled = true + mediaPlaybackRequiresUserGesture = false // TODO check if we need this allowFileAccess = true textZoom = Prefs.webTextScaling } diff --git a/app/src/main/kotlin/com/pitchedapps/frost/web/DebugWebView.kt b/app/src/main/kotlin/com/pitchedapps/frost/web/DebugWebView.kt index 90c4c7e2..e278db80 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/web/DebugWebView.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/web/DebugWebView.kt @@ -24,7 +24,7 @@ import android.util.AttributeSet import android.view.View import android.webkit.WebView import ca.allanwang.kau.utils.withAlpha -import com.pitchedapps.frost.facebook.USER_AGENT_BASIC +import com.pitchedapps.frost.facebook.USER_AGENT_FULL import com.pitchedapps.frost.injectors.CssHider import com.pitchedapps.frost.injectors.jsInject import com.pitchedapps.frost.utils.L @@ -53,9 +53,9 @@ class DebugWebView @JvmOverloads constructor( } @SuppressLint("SetJavaScriptEnabled") - fun setupWebview() { + private fun setupWebview() { settings.javaScriptEnabled = true - settings.userAgentString = USER_AGENT_BASIC + settings.userAgentString = USER_AGENT_FULL setLayerType(View.LAYER_TYPE_HARDWARE, null) webViewClient = DebugClient() isDrawingCacheEnabled = true diff --git a/docs/Changelog.md b/docs/Changelog.md index 99ba22d2..78f796d6 100644 --- a/docs/Changelog.md +++ b/docs/Changelog.md @@ -1,5 +1,8 @@ # Changelog +## v2.2.4 +* Show top bar to allow sharing posts + ## v2.2.3 * Add ability to hide stories * Remove fbclid from urls diff --git a/gradle.properties b/gradle.properties index 80b320d7..3e449ebc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,7 +14,7 @@ org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryErro APP_ID=Frost APP_GROUP=com.pitchedapps -KAU=998782a +KAU=4.0.0 KOTLIN=1.3.21 # https://mvnrepository.com/artifact/com.android.tools.build/gradle?repo=google -- cgit v1.2.3 From b70bdd67219502dc16d4c9ec387afdbc8f124d33 Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Sat, 13 Apr 2019 19:00:40 -0400 Subject: Video settings (#1390) * Add autoplay setting option * Update changelog --- app/src/main/kotlin/com/pitchedapps/frost/settings/Behaviour.kt | 9 +++++++++ app/src/main/res/values/strings_pref_behaviour.xml | 2 ++ app/src/main/res/xml/frost_changelog.xml | 5 ++++- 3 files changed, 15 insertions(+), 1 deletion(-) (limited to 'app/src/main/kotlin') diff --git a/app/src/main/kotlin/com/pitchedapps/frost/settings/Behaviour.kt b/app/src/main/kotlin/com/pitchedapps/frost/settings/Behaviour.kt index 10fa5c99..b77c0f2d 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/settings/Behaviour.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/settings/Behaviour.kt @@ -19,8 +19,10 @@ package com.pitchedapps.frost.settings import ca.allanwang.kau.kpref.activity.KPrefAdapterBuilder import com.pitchedapps.frost.R import com.pitchedapps.frost.activities.SettingsActivity +import com.pitchedapps.frost.facebook.FB_URL_BASE import com.pitchedapps.frost.utils.Prefs import com.pitchedapps.frost.utils.REQUEST_REFRESH +import com.pitchedapps.frost.utils.launchWebOverlay /** * Created by Allan Wang on 2017-06-30. @@ -58,6 +60,13 @@ fun SettingsActivity.getBehaviourPrefs(): KPrefAdapterBuilder.() -> Unit = { descRes = R.string.enable_pip_desc } + plainText(R.string.autoplay_settings) { + descRes = R.string.autoplay_settings_desc + onClick = { + launchWebOverlay("${FB_URL_BASE}settings/videos/") + } + } + checkbox(R.string.exit_confirmation, Prefs::exitConfirmation, { Prefs.exitConfirmation = it }) { descRes = R.string.exit_confirmation_desc } diff --git a/app/src/main/res/values/strings_pref_behaviour.xml b/app/src/main/res/values/strings_pref_behaviour.xml index 62e94112..77c35c1c 100644 --- a/app/src/main/res/values/strings_pref_behaviour.xml +++ b/app/src/main/res/values/strings_pref_behaviour.xml @@ -17,6 +17,8 @@ When loading a message thread, trigger a scroll to the bottom of the page rather than loading the page as is. Enable PIP Enable picture in picture videos + Autoplay Settings + Open Facebook\'s auto play settings. Note that it must be disabled for PIP to work. Exit Confirmation Show confirmation dialog before exiting the app Analytics diff --git a/app/src/main/res/xml/frost_changelog.xml b/app/src/main/res/xml/frost_changelog.xml index c9b8477e..1895e46f 100644 --- a/app/src/main/res/xml/frost_changelog.xml +++ b/app/src/main/res/xml/frost_changelog.xml @@ -8,7 +8,9 @@ - + + + @@ -17,6 +19,7 @@ + -- cgit v1.2.3 From e8c52e6ab127dae71d51b7b54c98bfd724568de3 Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Sat, 13 Apr 2019 19:52:24 -0400 Subject: Update user agent (#1400) * Rename user agent and update chrome for desktop, resolves #1387 * Rename more basic to desktop * Apply spotless --- app/src/main/AndroidManifest.xml | 2 +- .../frost/activities/WebOverlayActivity.kt | 12 ++++++------ .../com/pitchedapps/frost/debugger/OfflineWebsite.kt | 4 ++-- .../kotlin/com/pitchedapps/frost/facebook/FbConst.kt | 8 ++++---- .../pitchedapps/frost/facebook/requests/FbRequest.kt | 4 ++-- .../kotlin/com/pitchedapps/frost/utils/Downloader.kt | 6 +++--- .../main/kotlin/com/pitchedapps/frost/utils/Utils.kt | 8 ++++---- .../com/pitchedapps/frost/views/FrostWebView.kt | 10 +++++----- .../kotlin/com/pitchedapps/frost/web/DebugWebView.kt | 4 ++-- .../frost/web/FrostUrlOverlayValidator.kt | 20 ++++++++++---------- .../kotlin/com/pitchedapps/frost/web/LoginWebView.kt | 1 - docs/Changelog.md | 4 ++++ 12 files changed, 43 insertions(+), 40 deletions(-) (limited to 'app/src/main/kotlin') diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ad1fcbdc..5656860c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -48,7 +48,7 @@ android:launchMode="singleTop" android:theme="@style/FrostTheme.Overlay.Slide" /> >.withEmptyData(vararg key: String): List Context.launchWebOverlay fun Context.launchWebOverlay(url: String) = launchWebOverlayImpl(url) -fun Context.launchWebOverlayBasic(url: String) = launchWebOverlayImpl(url) +fun Context.launchWebOverlayDesktop(url: String) = launchWebOverlayImpl(url) private fun Context.fadeBundle() = ActivityOptions.makeCustomAnimation( this, @@ -393,7 +393,7 @@ fun frostJsoup(cookie: String?, url: String) = Jsoup.connect(url).run { if (cookie.isNullOrBlank()) this else cookie(FACEBOOK_COM, cookie) - }.userAgent(USER_AGENT_BASIC).get()!! + }.userAgent(USER_AGENT_DESKTOP).get()!! fun Element.first(vararg select: String): Element? { select.forEach { diff --git a/app/src/main/kotlin/com/pitchedapps/frost/views/FrostWebView.kt b/app/src/main/kotlin/com/pitchedapps/frost/views/FrostWebView.kt index 37b2234d..cc8e3fbc 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/views/FrostWebView.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/views/FrostWebView.kt @@ -29,8 +29,8 @@ import com.pitchedapps.frost.contracts.FrostContentCore import com.pitchedapps.frost.contracts.FrostContentParent import com.pitchedapps.frost.facebook.FB_HOME_URL import com.pitchedapps.frost.facebook.FbItem -import com.pitchedapps.frost.facebook.USER_AGENT_BASIC -import com.pitchedapps.frost.facebook.USER_AGENT_FULL +import com.pitchedapps.frost.facebook.USER_AGENT_DESKTOP +import com.pitchedapps.frost.facebook.USER_AGENT_MOBILE import com.pitchedapps.frost.fragments.WebFragment import com.pitchedapps.frost.utils.Prefs import com.pitchedapps.frost.utils.frostDownload @@ -38,7 +38,7 @@ import com.pitchedapps.frost.web.FrostChromeClient import com.pitchedapps.frost.web.FrostJSI import com.pitchedapps.frost.web.FrostWebViewClient import com.pitchedapps.frost.web.NestedWebView -import com.pitchedapps.frost.web.shouldUseBasicAgent +import com.pitchedapps.frost.web.shouldUseDesktopAgent /** * Created by Allan Wang on 2017-05-29. @@ -66,8 +66,8 @@ class FrostWebView @JvmOverloads constructor( @SuppressLint("SetJavaScriptEnabled") override fun bind(container: FrostContentContainer): View { userAgentString = - if (parent.baseEnum == FbItem.MESSAGES || parent.baseUrl.shouldUseBasicAgent) USER_AGENT_BASIC - else USER_AGENT_FULL + if (parent.baseEnum == FbItem.MESSAGES || parent.baseUrl.shouldUseDesktopAgent) USER_AGENT_DESKTOP + else USER_AGENT_MOBILE with(settings) { javaScriptEnabled = true mediaPlaybackRequiresUserGesture = false // TODO check if we need this diff --git a/app/src/main/kotlin/com/pitchedapps/frost/web/DebugWebView.kt b/app/src/main/kotlin/com/pitchedapps/frost/web/DebugWebView.kt index e278db80..6511ef9f 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/web/DebugWebView.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/web/DebugWebView.kt @@ -24,7 +24,7 @@ import android.util.AttributeSet import android.view.View import android.webkit.WebView import ca.allanwang.kau.utils.withAlpha -import com.pitchedapps.frost.facebook.USER_AGENT_FULL +import com.pitchedapps.frost.facebook.USER_AGENT_MOBILE import com.pitchedapps.frost.injectors.CssHider import com.pitchedapps.frost.injectors.jsInject import com.pitchedapps.frost.utils.L @@ -55,7 +55,7 @@ class DebugWebView @JvmOverloads constructor( @SuppressLint("SetJavaScriptEnabled") private fun setupWebview() { settings.javaScriptEnabled = true - settings.userAgentString = USER_AGENT_FULL + settings.userAgentString = USER_AGENT_MOBILE setLayerType(View.LAYER_TYPE_HARDWARE, null) webViewClient = DebugClient() isDrawingCacheEnabled = true diff --git a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostUrlOverlayValidator.kt b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostUrlOverlayValidator.kt index 24885fdf..81ade98f 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/web/FrostUrlOverlayValidator.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/web/FrostUrlOverlayValidator.kt @@ -22,7 +22,7 @@ import com.pitchedapps.frost.activities.WebOverlayActivityBase import com.pitchedapps.frost.contracts.VideoViewHolder import com.pitchedapps.frost.facebook.FbCookie import com.pitchedapps.frost.facebook.FbItem -import com.pitchedapps.frost.facebook.USER_AGENT_BASIC +import com.pitchedapps.frost.facebook.USER_AGENT_DESKTOP import com.pitchedapps.frost.facebook.formattedFbUrl import com.pitchedapps.frost.utils.L import com.pitchedapps.frost.utils.Prefs @@ -32,7 +32,7 @@ import com.pitchedapps.frost.utils.isIndirectImageUrl import com.pitchedapps.frost.utils.isVideoUrl import com.pitchedapps.frost.utils.launchImageActivity import com.pitchedapps.frost.utils.launchWebOverlay -import com.pitchedapps.frost.utils.launchWebOverlayBasic +import com.pitchedapps.frost.utils.launchWebOverlayDesktop import com.pitchedapps.frost.views.FrostWebView /** @@ -76,15 +76,15 @@ fun FrostWebView.requestWebOverlay(url: String): Boolean { if (!Prefs.overlayEnabled) return false if (context is WebOverlayActivityBase) { L.v { "Check web request from overlay" } - val shouldUseBasic = url.formattedFbUrl.shouldUseBasicAgent + val shouldUseDesktop = url.formattedFbUrl.shouldUseDesktopAgent //already overlay; manage user agent - if (userAgentString != USER_AGENT_BASIC && shouldUseBasic) { - L.i { "Switch to basic agent overlay" } - context.launchWebOverlayBasic(url) + if (userAgentString != USER_AGENT_DESKTOP && shouldUseDesktop) { + L.i { "Switch to desktop agent overlay" } + context.launchWebOverlayDesktop(url) return true } - if (userAgentString == USER_AGENT_BASIC && !shouldUseBasic) { - L.i { "Switch from basic agent" } + if (userAgentString == USER_AGENT_DESKTOP && !shouldUseDesktop) { + L.i { "Switch from desktop agent" } context.launchWebOverlay(url) return true } @@ -103,9 +103,9 @@ val messageWhitelist: Set = setOf(FbItem.MESSAGES, FbItem.CHAT, FbItem.FEED_MOST_RECENT, FbItem.FEED_TOP_STORIES) .mapTo(mutableSetOf(), FbItem::url) -val String.shouldUseBasicAgent: Boolean +val String.shouldUseDesktopAgent: Boolean get() = when { - contains("story.php") -> false // do not use basic for comment section + contains("story.php") -> false // do not use desktop for comment section contains("/events/") -> false // do not use for events (namely the map) contains("/messages") -> true // must use for messages else -> false // default to normal user agent diff --git a/app/src/main/kotlin/com/pitchedapps/frost/web/LoginWebView.kt b/app/src/main/kotlin/com/pitchedapps/frost/web/LoginWebView.kt index 1c300b03..c27385fc 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/web/LoginWebView.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/web/LoginWebView.kt @@ -35,7 +35,6 @@ import com.pitchedapps.frost.facebook.FB_USER_MATCHER import com.pitchedapps.frost.facebook.FbCookie import com.pitchedapps.frost.facebook.get import com.pitchedapps.frost.injectors.CssHider -import com.pitchedapps.frost.injectors.JsAssets import com.pitchedapps.frost.injectors.jsInject import com.pitchedapps.frost.utils.L import com.pitchedapps.frost.utils.Prefs diff --git a/docs/Changelog.md b/docs/Changelog.md index 78f796d6..7a6bbfab 100644 --- a/docs/Changelog.md +++ b/docs/Changelog.md @@ -2,6 +2,9 @@ ## v2.2.4 * Show top bar to allow sharing posts +* Fix unmuting videos when autoplay is enabled +* Add shortcut to toggle autoplay in settings > behaviour +* Update theme ## v2.2.3 * Add ability to hide stories @@ -9,6 +12,7 @@ * Apply notification keyword filter to title as well * Remove round icon settings as they are the default in Facebook * Update theme +* Update translations ## v2.2.2 * New marketplace shortcut -- cgit v1.2.3 From edfa56908bc30bcf3185a744ab87eee49a62dce3 Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Sat, 13 Apr 2019 20:03:15 -0400 Subject: Delete notification channels after creating new ones, may resolve #1360 --- .../main/kotlin/com/pitchedapps/frost/services/NotificationUtils.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app/src/main/kotlin') diff --git a/app/src/main/kotlin/com/pitchedapps/frost/services/NotificationUtils.kt b/app/src/main/kotlin/com/pitchedapps/frost/services/NotificationUtils.kt index 20a497e3..bba2a9a1 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/services/NotificationUtils.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/services/NotificationUtils.kt @@ -46,14 +46,14 @@ fun setupNotificationChannels(c: Context) { val manager = c.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager val appName = c.string(R.string.frost_name) val msg = c.string(R.string.messages) + manager.createNotificationChannel(NOTIF_CHANNEL_GENERAL, appName) + manager.createNotificationChannel(NOTIF_CHANNEL_MESSAGES, "$appName: $msg") manager.notificationChannels .filter { it.id != NOTIF_CHANNEL_GENERAL && it.id != NOTIF_CHANNEL_MESSAGES } .forEach { manager.deleteNotificationChannel(it.id) } - manager.createNotificationChannel(NOTIF_CHANNEL_GENERAL, appName) - manager.createNotificationChannel(NOTIF_CHANNEL_MESSAGES, "$appName: $msg") L.d { "Created notification channels: ${manager.notificationChannels.size} channels, ${manager.notificationChannelGroups.size} groups" } } -- cgit v1.2.3 From f0f95295bdb2b853aa6262ec4bed2353ce326eee Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Sat, 13 Apr 2019 20:53:46 -0400 Subject: Add fdroid link (#1402) * Add fdroid link * Simplify icon * Provide svg source --- .../com/pitchedapps/frost/activities/AboutActivity.kt | 18 ++++++++++++++---- app/src/main/res/drawable/ic_fdroid_24.xml | 5 +++++ app/src/main/res/values/strings_no_translate.xml | 1 + 3 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 app/src/main/res/drawable/ic_fdroid_24.xml (limited to 'app/src/main/kotlin') diff --git a/app/src/main/kotlin/com/pitchedapps/frost/activities/AboutActivity.kt b/app/src/main/kotlin/com/pitchedapps/frost/activities/AboutActivity.kt index f4c1244f..56125303 100644 --- a/app/src/main/kotlin/com/pitchedapps/frost/activities/AboutActivity.kt +++ b/app/src/main/kotlin/com/pitchedapps/frost/activities/AboutActivity.kt @@ -30,6 +30,7 @@ import ca.allanwang.kau.adapters.ThemableIItemDelegate import ca.allanwang.kau.logging.KL import ca.allanwang.kau.utils.bindView import ca.allanwang.kau.utils.dimenPixelSize +import ca.allanwang.kau.utils.drawable import ca.allanwang.kau.utils.resolveDrawable import ca.allanwang.kau.utils.startLink import ca.allanwang.kau.utils.string @@ -156,17 +157,26 @@ class AboutActivity : AboutActivityBase(null, { init { val c = itemView.context val size = c.dimenPixelSize(R.dimen.kau_avatar_bounds) - images = arrayOf Unit>>( + + val icons: Array Unit>> = + arrayOf(R.drawable.ic_fdroid_24 to { c.startLink(R.string.fdroid_url) }) + val iicons: Array Unit>> = arrayOf( GoogleMaterial.Icon.gmd_file_download to { c.startLink(R.string.github_downloads_url) }, CommunityMaterial.Icon2.cmd_reddit to { c.startLink(R.string.reddit_url) }, CommunityMaterial.Icon.cmd_github_circle to { c.startLink(R.string.github_url) }, CommunityMaterial.Icon2.cmd_slack to { c.startLink(R.string.slack_url) }, - CommunityMaterial.Icon2.cmd_xda to { c.startLink(R.string.xda_url) } - ).mapIndexed { i, (icon, onClick) -> + CommunityMaterial.Icon2.cmd_xda to { c.startLink(R.string.xda_url) }) + + images = (icons.map { (icon, onClick) -> c.drawable(icon) to onClick } + iicons.map { (icon, onClick) -> + icon.toDrawable( + c, + 32 + ) to onClick + }).mapIndexed { i, (icon, onClick) -> ImageView(c).apply { layoutParams = ViewGroup.LayoutParams(size, size) id = 109389 + i - setImageDrawable(icon.toDrawable(context, 32)) + setImageDrawable(icon) scaleType = ImageView.ScaleType.CENTER background = context.resolveDrawable(android.R.attr.selectableItemBackgroundBorderless) setOnClickListener { onClick() } diff --git a/app/src/main/res/drawable/ic_fdroid_24.xml b/app/src/main/res/drawable/ic_fdroid_24.xml new file mode 100644 index 00000000..2c718fa6 --- /dev/null +++ b/app/src/main/res/drawable/ic_fdroid_24.xml @@ -0,0 +1,5 @@ + + + + diff --git a/app/src/main/res/values/strings_no_translate.xml b/app/src/main/res/values/strings_no_translate.xml index 9eb85dc2..d9aa6cee 100644 --- a/app/src/main/res/values/strings_no_translate.xml +++ b/app/src/main/res/values/strings_no_translate.xml @@ -6,6 +6,7 @@ https://crwd.in/frost-for-facebook https://github.com/AllanWang/Frost-for-Facebook https://github.com/AllanWang/Frost-for-Facebook/releases + https://f-droid.org/en/packages/com.pitchedapps.frost https://www.reddit.com/r/FrostForFacebook https://frost-slack.allanwang.ca https://forum.xda-developers.com/android/apps-games/app-frost-facebook-t3685896 -- cgit v1.2.3