mirror of
https://github.com/AllanWang/Frost-for-Facebook.git
synced 2024-11-08 20:12:39 +01:00
Dev 1.1.6 (#33) - Fix play store listing, add sharing options, update css & js
* Remove play store listing updates * Fix up listing * Combine url getters for overlay activity * Begin building context menu programmatically * Update css and js
This commit is contained in:
parent
bb70ed737d
commit
6adfc49637
@ -4,7 +4,6 @@ plugins {
|
||||
|
||||
apply plugin: 'com.android.application'
|
||||
apply plugin: 'kotlin-android'
|
||||
apply plugin: 'kotlin-android-extensions'
|
||||
apply plugin: 'kotlin-kapt'
|
||||
apply plugin: 'io.fabric'
|
||||
apply plugin: 'com.github.triplet.play'
|
||||
|
@ -1 +1 @@
|
||||
#threadlist_rows i.img:not(.profpic), i.img.profpic:not(._1_0m) { border-radius: 50%; }
|
||||
#threadlist_rows i.img:not(.profpic), i.img.profpic:not(._1_0m), ._42b6._42b6._42b6, ._5i9c.img, img._2cu2, i.img.l, [id*=threadlist] i.img:not(._1_0m) { border-radius: 50%; }
|
||||
|
@ -1,3 +1,3 @@
|
||||
#threadlist_rows i.img:not(.profpic), i.img.profpic:not(._1_0m) {
|
||||
#threadlist_rows i.img:not(.profpic), i.img.profpic:not(._1_0m), ._42b6._42b6._42b6, ._5i9c.img, img._2cu2, i.img.l, [id*=threadlist] i.img:not(._1_0m) {
|
||||
border-radius: 50%;
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ body, #root, #header, [style*="background-color"], ._55wo, ._1upc, input, ._2f9r
|
||||
|
||||
button, button::before, .touch ._56bt, ._56be::before, .btnS, .touch::before, ._590n, ._4g8h, ._5xo2, ._5u5a::before, ._4u3j, ._15ks, ._5hua, ._59tt, ._41ft, .jx-tokenizer, ._55fj, .excessItem, ._4e8n, ._5pxa._3uj9, ._5n_5, ._u2d, ._56bu::before, ._5h8f, ._d00, ._2066, ._2k51, ._4qax, .aclb, ._4756, ._w34, ._56bv::before, ._5769, ._34iv, .acbk { background: $BBT$ !important; }
|
||||
|
||||
[style*="color"], body, input, ._43mh, .touch .btn, p, span, .fcg, button, ._52j9, ._52jb, ._52ja, ._5j35, ._rnk, ._24u0, ._1g06, ._14ye, .fcb, ._56cz._56c_, ._1gk_, ._55fj, ._45fu, ._18qg, ._1_ac, textarea, ._24pi, ._4en9, ._1kb, ._5p7j, ._2klz, ._5780, ._5781, ._5782, ._3u9u, ._3u9_, ._3u9s, ._1hcx, ._2066, ._1_-1, ._cv_, ._1nbx, ._2cuh, ._4ms9, ._4ms5, ._4ms6, ._31b4, ._31b5, ._5q_r, ._idb, ._27vp, ._4nwe, ._4nw9, ._27vi, .appCenterAppInfo, .appCenterPermissions, ._3c9l, ._3c9m, ._4jn_, ._32qt, ._3mom, ._3moo, ._-7o, ._d00, ._d01, ._559g, ._2new, .appCenterCategorySelectorButton, .mentions-input, .mentions-placeholder, .fcw, ._5-7t, .fcl, ._4qas, .thread-title, .title, ._46pa, ._336p, ._1rrd, ._2om4, ._3m1m, ._2om2, ._5n_e, .appListExplanation, ._5yt8, h1, h2, h3, h4, h5, h6 { color: $T$ !important; }
|
||||
[style*="color"], body, input, ._43mh, .touch .btn, p, span, .fcg, button, ._52j9, ._52jb, ._52ja, ._5j35, ._rnk, ._24u0, ._1g06, ._14ye, .fcb, ._56cz._56c_, ._1gk_, ._55fj, ._45fu, ._18qg, ._1_ac, textarea, ._24pi, ._4en9, ._1kb, ._5p7j, ._2klz, ._5780, ._5781, ._5782, ._3u9u, ._3u9_, ._3u9s, ._1hcx, ._2066, ._1_-1, ._cv_, ._1nbx, ._2cuh, ._4ms9, ._4ms5, ._4ms6, ._31b4, ._31b5, ._5q_r, ._idb, ._27vp, ._4nwe, ._4nw9, ._27vi, .appCenterAppInfo, .appCenterPermissions, ._3c9l, ._3c9m, ._4jn_, ._32qt, ._3mom, ._3moo, ._-7o, ._d00, ._d01, ._559g, ._2new, .appCenterCategorySelectorButton, .mentions-input, .mentions-placeholder, .fcw, ._5-7t, .fcl, ._4qas, .thread-title, .title, ._46pa, ._336p, ._1rrd, ._2om4, ._3m1m, ._2om2, ._5n_e, .appListExplanation, ._5yt8, ._8he, ._2luw, ._5rgs, h1, h2, h3, h4, h5, h6 { color: $T$ !important; }
|
||||
|
||||
._15kl::before, ._5j35::after, ._2k4b, ._3to7, ._4nw8 { border-left: 1px solid $D$ !important; }
|
||||
|
||||
|
@ -10,7 +10,7 @@ body, #root, #header, [style*="background-color"], ._55wo, ._1upc, input, ._2f9r
|
||||
|
||||
button, button::before, .touch ._56bt, ._56be::before, .btnS, .touch::before, ._590n, ._4g8h, ._5xo2, ._5u5a::before, ._4u3j, ._15ks, ._5hua, ._59tt, ._41ft, .jx-tokenizer, ._55fj, .excessItem, ._4e8n, ._5pxa._3uj9, ._5n_5, ._u2d, ._56bu::before, ._5h8f, ._d00, ._2066, ._2k51, ._4qax, .aclb, ._4756, ._w34, ._56bv::before, ._5769, ._34iv, .acbk { background: rgba(89, 89, 89, 0.2) !important; }
|
||||
|
||||
[style*="color"], body, input, ._43mh, .touch .btn, p, span, .fcg, button, ._52j9, ._52jb, ._52ja, ._5j35, ._rnk, ._24u0, ._1g06, ._14ye, .fcb, ._56cz._56c_, ._1gk_, ._55fj, ._45fu, ._18qg, ._1_ac, textarea, ._24pi, ._4en9, ._1kb, ._5p7j, ._2klz, ._5780, ._5781, ._5782, ._3u9u, ._3u9_, ._3u9s, ._1hcx, ._2066, ._1_-1, ._cv_, ._1nbx, ._2cuh, ._4ms9, ._4ms5, ._4ms6, ._31b4, ._31b5, ._5q_r, ._idb, ._27vp, ._4nwe, ._4nw9, ._27vi, .appCenterAppInfo, .appCenterPermissions, ._3c9l, ._3c9m, ._4jn_, ._32qt, ._3mom, ._3moo, ._-7o, ._d00, ._d01, ._559g, ._2new, .appCenterCategorySelectorButton, .mentions-input, .mentions-placeholder, .fcw, ._5-7t, .fcl, ._4qas, .thread-title, .title, ._46pa, ._336p, ._1rrd, ._2om4, ._3m1m, ._2om2, ._5n_e, .appListExplanation, ._5yt8, h1, h2, h3, h4, h5, h6 { color: #fff !important; }
|
||||
[style*="color"], body, input, ._43mh, .touch .btn, p, span, .fcg, button, ._52j9, ._52jb, ._52ja, ._5j35, ._rnk, ._24u0, ._1g06, ._14ye, .fcb, ._56cz._56c_, ._1gk_, ._55fj, ._45fu, ._18qg, ._1_ac, textarea, ._24pi, ._4en9, ._1kb, ._5p7j, ._2klz, ._5780, ._5781, ._5782, ._3u9u, ._3u9_, ._3u9s, ._1hcx, ._2066, ._1_-1, ._cv_, ._1nbx, ._2cuh, ._4ms9, ._4ms5, ._4ms6, ._31b4, ._31b5, ._5q_r, ._idb, ._27vp, ._4nwe, ._4nw9, ._27vi, .appCenterAppInfo, .appCenterPermissions, ._3c9l, ._3c9m, ._4jn_, ._32qt, ._3mom, ._3moo, ._-7o, ._d00, ._d01, ._559g, ._2new, .appCenterCategorySelectorButton, .mentions-input, .mentions-placeholder, .fcw, ._5-7t, .fcl, ._4qas, .thread-title, .title, ._46pa, ._336p, ._1rrd, ._2om4, ._3m1m, ._2om2, ._5n_e, .appListExplanation, ._5yt8, ._8he, ._2luw, ._5rgs, h1, h2, h3, h4, h5, h6 { color: #fff !important; }
|
||||
|
||||
._15kl::before, ._5j35::after, ._2k4b, ._3to7, ._4nw8 { border-left: 1px solid rgba(255, 255, 255, 0.3) !important; }
|
||||
|
||||
|
@ -10,7 +10,7 @@ body, #root, #header, [style*="background-color"], ._55wo, ._1upc, input, ._2f9r
|
||||
|
||||
button, button::before, .touch ._56bt, ._56be::before, .btnS, .touch::before, ._590n, ._4g8h, ._5xo2, ._5u5a::before, ._4u3j, ._15ks, ._5hua, ._59tt, ._41ft, .jx-tokenizer, ._55fj, .excessItem, ._4e8n, ._5pxa._3uj9, ._5n_5, ._u2d, ._56bu::before, ._5h8f, ._d00, ._2066, ._2k51, ._4qax, .aclb, ._4756, ._w34, ._56bv::before, ._5769, ._34iv, .acbk { background: rgba(137, 137, 137, 0.2) !important; }
|
||||
|
||||
[style*="color"], body, input, ._43mh, .touch .btn, p, span, .fcg, button, ._52j9, ._52jb, ._52ja, ._5j35, ._rnk, ._24u0, ._1g06, ._14ye, .fcb, ._56cz._56c_, ._1gk_, ._55fj, ._45fu, ._18qg, ._1_ac, textarea, ._24pi, ._4en9, ._1kb, ._5p7j, ._2klz, ._5780, ._5781, ._5782, ._3u9u, ._3u9_, ._3u9s, ._1hcx, ._2066, ._1_-1, ._cv_, ._1nbx, ._2cuh, ._4ms9, ._4ms5, ._4ms6, ._31b4, ._31b5, ._5q_r, ._idb, ._27vp, ._4nwe, ._4nw9, ._27vi, .appCenterAppInfo, .appCenterPermissions, ._3c9l, ._3c9m, ._4jn_, ._32qt, ._3mom, ._3moo, ._-7o, ._d00, ._d01, ._559g, ._2new, .appCenterCategorySelectorButton, .mentions-input, .mentions-placeholder, .fcw, ._5-7t, .fcl, ._4qas, .thread-title, .title, ._46pa, ._336p, ._1rrd, ._2om4, ._3m1m, ._2om2, ._5n_e, .appListExplanation, ._5yt8, h1, h2, h3, h4, h5, h6 { color: #fff !important; }
|
||||
[style*="color"], body, input, ._43mh, .touch .btn, p, span, .fcg, button, ._52j9, ._52jb, ._52ja, ._5j35, ._rnk, ._24u0, ._1g06, ._14ye, .fcb, ._56cz._56c_, ._1gk_, ._55fj, ._45fu, ._18qg, ._1_ac, textarea, ._24pi, ._4en9, ._1kb, ._5p7j, ._2klz, ._5780, ._5781, ._5782, ._3u9u, ._3u9_, ._3u9s, ._1hcx, ._2066, ._1_-1, ._cv_, ._1nbx, ._2cuh, ._4ms9, ._4ms5, ._4ms6, ._31b4, ._31b5, ._5q_r, ._idb, ._27vp, ._4nwe, ._4nw9, ._27vi, .appCenterAppInfo, .appCenterPermissions, ._3c9l, ._3c9m, ._4jn_, ._32qt, ._3mom, ._3moo, ._-7o, ._d00, ._d01, ._559g, ._2new, .appCenterCategorySelectorButton, .mentions-input, .mentions-placeholder, .fcw, ._5-7t, .fcl, ._4qas, .thread-title, .title, ._46pa, ._336p, ._1rrd, ._2om4, ._3m1m, ._2om2, ._5n_e, .appListExplanation, ._5yt8, ._8he, ._2luw, ._5rgs, h1, h2, h3, h4, h5, h6 { color: #fff !important; }
|
||||
|
||||
._15kl::before, ._5j35::after, ._2k4b, ._3to7, ._4nw8 { border-left: 1px solid rgba(255, 255, 255, 0.3) !important; }
|
||||
|
||||
|
@ -10,7 +10,7 @@ body, #root, #header, [style*="background-color"], ._55wo, ._1upc, input, ._2f9r
|
||||
|
||||
button, button::before, .touch ._56bt, ._56be::before, .btnS, .touch::before, ._590n, ._4g8h, ._5xo2, ._5u5a::before, ._4u3j, ._15ks, ._5hua, ._59tt, ._41ft, .jx-tokenizer, ._55fj, .excessItem, ._4e8n, ._5pxa._3uj9, ._5n_5, ._u2d, ._56bu::before, ._5h8f, ._d00, ._2066, ._2k51, ._4qax, .aclb, ._4756, ._w34, ._56bv::before, ._5769, ._34iv, .acbk { background: rgba(128, 128, 128, 0.05) !important; }
|
||||
|
||||
[style*="color"], body, input, ._43mh, .touch .btn, p, span, .fcg, button, ._52j9, ._52jb, ._52ja, ._5j35, ._rnk, ._24u0, ._1g06, ._14ye, .fcb, ._56cz._56c_, ._1gk_, ._55fj, ._45fu, ._18qg, ._1_ac, textarea, ._24pi, ._4en9, ._1kb, ._5p7j, ._2klz, ._5780, ._5781, ._5782, ._3u9u, ._3u9_, ._3u9s, ._1hcx, ._2066, ._1_-1, ._cv_, ._1nbx, ._2cuh, ._4ms9, ._4ms5, ._4ms6, ._31b4, ._31b5, ._5q_r, ._idb, ._27vp, ._4nwe, ._4nw9, ._27vi, .appCenterAppInfo, .appCenterPermissions, ._3c9l, ._3c9m, ._4jn_, ._32qt, ._3mom, ._3moo, ._-7o, ._d00, ._d01, ._559g, ._2new, .appCenterCategorySelectorButton, .mentions-input, .mentions-placeholder, .fcw, ._5-7t, .fcl, ._4qas, .thread-title, .title, ._46pa, ._336p, ._1rrd, ._2om4, ._3m1m, ._2om2, ._5n_e, .appListExplanation, ._5yt8, h1, h2, h3, h4, h5, h6 { color: #fff !important; }
|
||||
[style*="color"], body, input, ._43mh, .touch .btn, p, span, .fcg, button, ._52j9, ._52jb, ._52ja, ._5j35, ._rnk, ._24u0, ._1g06, ._14ye, .fcb, ._56cz._56c_, ._1gk_, ._55fj, ._45fu, ._18qg, ._1_ac, textarea, ._24pi, ._4en9, ._1kb, ._5p7j, ._2klz, ._5780, ._5781, ._5782, ._3u9u, ._3u9_, ._3u9s, ._1hcx, ._2066, ._1_-1, ._cv_, ._1nbx, ._2cuh, ._4ms9, ._4ms5, ._4ms6, ._31b4, ._31b5, ._5q_r, ._idb, ._27vp, ._4nwe, ._4nw9, ._27vi, .appCenterAppInfo, .appCenterPermissions, ._3c9l, ._3c9m, ._4jn_, ._32qt, ._3mom, ._3moo, ._-7o, ._d00, ._d01, ._559g, ._2new, .appCenterCategorySelectorButton, .mentions-input, .mentions-placeholder, .fcw, ._5-7t, .fcl, ._4qas, .thread-title, .title, ._46pa, ._336p, ._1rrd, ._2om4, ._3m1m, ._2om2, ._5n_e, .appListExplanation, ._5yt8, ._8he, ._2luw, ._5rgs, h1, h2, h3, h4, h5, h6 { color: #fff !important; }
|
||||
|
||||
._15kl::before, ._5j35::after, ._2k4b, ._3to7, ._4nw8 { border-left: 1px solid rgba(255, 255, 255, 0.3) !important; }
|
||||
|
||||
|
@ -10,7 +10,7 @@ body, #root, #header, [style*="background-color"], ._55wo, ._1upc, input, ._2f9r
|
||||
|
||||
button, button::before, .touch ._56bt, ._56be::before, .btnS, .touch::before, ._590n, ._4g8h, ._5xo2, ._5u5a::before, ._4u3j, ._15ks, ._5hua, ._59tt, ._41ft, .jx-tokenizer, ._55fj, .excessItem, ._4e8n, ._5pxa._3uj9, ._5n_5, ._u2d, ._56bu::before, ._5h8f, ._d00, ._2066, ._2k51, ._4qax, .aclb, ._4756, ._w34, ._56bv::before, ._5769, ._34iv, .acbk { background: rgba(255, 255, 255, 0.2) !important; }
|
||||
|
||||
[style*="color"], body, input, ._43mh, .touch .btn, p, span, .fcg, button, ._52j9, ._52jb, ._52ja, ._5j35, ._rnk, ._24u0, ._1g06, ._14ye, .fcb, ._56cz._56c_, ._1gk_, ._55fj, ._45fu, ._18qg, ._1_ac, textarea, ._24pi, ._4en9, ._1kb, ._5p7j, ._2klz, ._5780, ._5781, ._5782, ._3u9u, ._3u9_, ._3u9s, ._1hcx, ._2066, ._1_-1, ._cv_, ._1nbx, ._2cuh, ._4ms9, ._4ms5, ._4ms6, ._31b4, ._31b5, ._5q_r, ._idb, ._27vp, ._4nwe, ._4nw9, ._27vi, .appCenterAppInfo, .appCenterPermissions, ._3c9l, ._3c9m, ._4jn_, ._32qt, ._3mom, ._3moo, ._-7o, ._d00, ._d01, ._559g, ._2new, .appCenterCategorySelectorButton, .mentions-input, .mentions-placeholder, .fcw, ._5-7t, .fcl, ._4qas, .thread-title, .title, ._46pa, ._336p, ._1rrd, ._2om4, ._3m1m, ._2om2, ._5n_e, .appListExplanation, ._5yt8, h1, h2, h3, h4, h5, h6 { color: #000 !important; }
|
||||
[style*="color"], body, input, ._43mh, .touch .btn, p, span, .fcg, button, ._52j9, ._52jb, ._52ja, ._5j35, ._rnk, ._24u0, ._1g06, ._14ye, .fcb, ._56cz._56c_, ._1gk_, ._55fj, ._45fu, ._18qg, ._1_ac, textarea, ._24pi, ._4en9, ._1kb, ._5p7j, ._2klz, ._5780, ._5781, ._5782, ._3u9u, ._3u9_, ._3u9s, ._1hcx, ._2066, ._1_-1, ._cv_, ._1nbx, ._2cuh, ._4ms9, ._4ms5, ._4ms6, ._31b4, ._31b5, ._5q_r, ._idb, ._27vp, ._4nwe, ._4nw9, ._27vi, .appCenterAppInfo, .appCenterPermissions, ._3c9l, ._3c9m, ._4jn_, ._32qt, ._3mom, ._3moo, ._-7o, ._d00, ._d01, ._559g, ._2new, .appCenterCategorySelectorButton, .mentions-input, .mentions-placeholder, .fcw, ._5-7t, .fcl, ._4qas, .thread-title, .title, ._46pa, ._336p, ._1rrd, ._2om4, ._3m1m, ._2om2, ._5n_e, .appListExplanation, ._5yt8, ._8he, ._2luw, ._5rgs, h1, h2, h3, h4, h5, h6 { color: #000 !important; }
|
||||
|
||||
._15kl::before, ._5j35::after, ._2k4b, ._3to7, ._4nw8 { border-left: 1px solid rgba(0, 0, 0, 0.3) !important; }
|
||||
|
||||
|
@ -3,7 +3,14 @@ if (!window.hasOwnProperty('frost_click_a')) {
|
||||
console.log('Registering frost_click_a');
|
||||
window.frost_click_a = true;
|
||||
|
||||
var prevented = false;
|
||||
|
||||
var _frostAClick = function(e) {
|
||||
|
||||
|
||||
/*
|
||||
* Commonality; check for valid target
|
||||
*/
|
||||
var element = e.target || e.srcElement;
|
||||
if (element.tagName !== 'A') element = element.parentNode;
|
||||
//Notifications is two layers under
|
||||
@ -11,12 +18,37 @@ if (!window.hasOwnProperty('frost_click_a')) {
|
||||
if (element.tagName === 'A' && element.getAttribute('href') !== '#') {
|
||||
var url = element.getAttribute('href');
|
||||
if (url.includes('photoset_token')) return;
|
||||
|
||||
|
||||
|
||||
|
||||
if (!prevented) {
|
||||
console.log('Click Intercept', url);
|
||||
Frost.loadUrl(url);
|
||||
}
|
||||
e.stopPropagation();
|
||||
e.preventDefault();
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener('click', _frostAClick, true);
|
||||
/*
|
||||
* On top of the click event, we must stop it for long presses
|
||||
* Since that will conflict with the context menu
|
||||
* Note that we only override it on conditions where the context menu
|
||||
* Will occur
|
||||
*/
|
||||
var _frostPreventClick = function() {
|
||||
console.log('Click prevented')
|
||||
prevented = true;
|
||||
}
|
||||
|
||||
document.addEventListener('click', _frostAClick, true);
|
||||
|
||||
document.addEventListener('touchstart', function _frostStart(e) {
|
||||
setTimeout(_frostPreventClick, 500);
|
||||
}, true);
|
||||
|
||||
document.addEventListener('touchend', function _frostEnd(e) {
|
||||
prevented = false;
|
||||
}, true);
|
||||
}
|
||||
|
35
app/src/main/assets/js/click_a.min.js
vendored
35
app/src/main/assets/js/click_a.min.js
vendored
@ -1,17 +1,22 @@
|
||||
if(!window.hasOwnProperty("frost_click_a")){
|
||||
console.log("Registering frost_click_a");
|
||||
window.frost_click_a=true;
|
||||
var _frostAClick=function(e){
|
||||
var element=e.target||e.srcElement;
|
||||
if(element.tagName!=="A")element=element.parentNode;
|
||||
if(element.tagName!=="A")element=element.parentNode;
|
||||
if(element.tagName==="A"&&element.getAttribute("href")!=="#"){
|
||||
var url=element.getAttribute("href");
|
||||
if(url.includes("photoset_token"))return;
|
||||
console.log("Click Intercept",url);
|
||||
Frost.loadUrl(url);
|
||||
e.stopPropagation();
|
||||
e.preventDefault();
|
||||
}};
|
||||
document.addEventListener("click",_frostAClick,true);
|
||||
console.log("Registering frost_click_a"),
|
||||
window.frost_click_a=!0
|
||||
;var prevented=!1,_frostAClick=function(e){
|
||||
var t=e.target||e.srcElement
|
||||
;if("A"!==t.tagName&&(t=t.parentNode),"A"!==t.tagName&&(t=t.parentNode),
|
||||
"A"===t.tagName&&"#"!==t.getAttribute("href")){
|
||||
var n=t.getAttribute("href")
|
||||
;if(n.includes("photoset_token"))return
|
||||
;prevented||(console.log("Click Intercept",n),
|
||||
Frost.loadUrl(n)),e.stopPropagation(),
|
||||
e.preventDefault()
|
||||
}
|
||||
},_frostPreventClick=function(){
|
||||
console.log("Click prevented"),prevented=!0
|
||||
}
|
||||
;document.addEventListener("click",_frostAClick,!0),document.addEventListener("touchstart",function(e){
|
||||
setTimeout(_frostPreventClick,500)
|
||||
},!0),document.addEventListener("touchend",function(e){
|
||||
prevented=!1
|
||||
},!0)
|
||||
}
|
@ -1,9 +0,0 @@
|
||||
// we will handle click events
|
||||
if (!window.hasOwnProperty('frost_click_interceptor')) {
|
||||
console.log('Registering frost_click_interceptor');
|
||||
window.frost_click_interceptor = true;
|
||||
document.addEventListener('click', function _menuClick(e) {
|
||||
var element = e.target || e.srcElement;
|
||||
console.log(element.tagName);
|
||||
}, true);
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
if(!window.hasOwnProperty("frost_click_interceptor")){
|
||||
console.log("Registering frost_click_interceptor");
|
||||
window.frost_click_interceptor=true;
|
||||
document.addEventListener("click",function _menuClick(e){
|
||||
var element=e.target||e.srcElement;
|
||||
console.log(element.tagName);
|
||||
},true);
|
||||
}
|
31
app/src/main/assets/js/context_a.js
Normal file
31
app/src/main/assets/js/context_a.js
Normal file
@ -0,0 +1,31 @@
|
||||
//context menu for links
|
||||
//largely mimics click_a.js
|
||||
if (!window.hasOwnProperty('frost_context_a')) {
|
||||
console.log('frost_context_a frost_click_a');
|
||||
window.frost_context_a = true;
|
||||
|
||||
var _frostAContext = function(e) {
|
||||
|
||||
|
||||
/*
|
||||
* Commonality; check for valid target
|
||||
*/
|
||||
var element = e.target || e.srcElement;
|
||||
if (element.tagName !== 'A') element = element.parentNode;
|
||||
//Notifications is two layers under
|
||||
if (element.tagName !== 'A') element = element.parentNode;
|
||||
if (element.tagName === 'A' && element.getAttribute('href') !== '#') {
|
||||
var url = element.getAttribute('href');
|
||||
if (url.includes('photoset_token')) return;
|
||||
|
||||
|
||||
|
||||
console.log('Context Intercept', url);
|
||||
Frost.contextMenu(url);
|
||||
e.stopPropagation();
|
||||
e.preventDefault();
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener('contextmenu', _frostAContext, true);
|
||||
}
|
15
app/src/main/assets/js/context_a.min.js
vendored
Normal file
15
app/src/main/assets/js/context_a.min.js
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
if(!window.hasOwnProperty("frost_context_a")){
|
||||
console.log("frost_context_a frost_click_a"),
|
||||
window.frost_context_a=!0
|
||||
;var _frostAContext=function(t){
|
||||
var e=t.target||t.srcElement
|
||||
;if("A"!==e.tagName&&(e=e.parentNode),"A"!==e.tagName&&(e=e.parentNode),
|
||||
"A"===e.tagName&&"#"!==e.getAttribute("href")){
|
||||
var o=e.getAttribute("href")
|
||||
;if(o.includes("photoset_token"))return
|
||||
;console.log("Context Intercept",o),Frost.contextMenu(o),
|
||||
t.stopPropagation(),t.preventDefault()
|
||||
}
|
||||
}
|
||||
;document.addEventListener("contextmenu",_frostAContext,!0)
|
||||
}
|
@ -13,10 +13,6 @@ import com.pitchedapps.frost.utils.formattedFbUrl
|
||||
*/
|
||||
class FrostWebActivity : WebOverlayActivity() {
|
||||
|
||||
override val url: String
|
||||
get() = intent.dataString!!.formattedFbUrl
|
||||
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
Prefs.prevId = Prefs.userId
|
||||
super.onCreate(savedInstanceState)
|
||||
|
@ -106,7 +106,7 @@ class MainActivity : BaseActivity(), FrostWebViewSearch.SearchContract,
|
||||
super.onCreate(savedInstanceState)
|
||||
if (BuildConfig.VERSION_CODE > Prefs.versionCode) {
|
||||
Prefs.versionCode = BuildConfig.VERSION_CODE
|
||||
showChangelog(R.xml.changelog, Prefs.textColor) { theme() }
|
||||
if (!BuildConfig.DEBUG) showChangelog(R.xml.changelog, Prefs.textColor) { theme() }
|
||||
}
|
||||
setContentView(R.layout.activity_main)
|
||||
setSupportActionBar(toolbar)
|
||||
|
@ -41,7 +41,7 @@ open class WebOverlayActivity : AppCompatActivity(),
|
||||
}
|
||||
|
||||
open val url: String
|
||||
get() = intent.extras!!.getString(ARG_URL).formattedFbUrl
|
||||
get() = (intent.extras?.getString(ARG_URL) ?: intent.dataString).formattedFbUrl
|
||||
|
||||
val userId: Long
|
||||
get() = intent.extras?.getLong(ARG_USER_ID, Prefs.userId) ?: Prefs.userId
|
||||
@ -61,7 +61,7 @@ open class WebOverlayActivity : AppCompatActivity(),
|
||||
setFrostColors(toolbar, themeWindow = false)
|
||||
coordinator.setBackgroundColor(Prefs.bgColor.withAlpha(255))
|
||||
|
||||
frostWeb.web.setupWebview(url)
|
||||
frostWeb.setupWebview(url)
|
||||
frostWeb.web.addTitleListener({ toolbar.title = it })
|
||||
if (userId != Prefs.userId) FbCookie.switchUser(userId) { frostWeb.web.loadBaseUrl() }
|
||||
else frostWeb.web.loadBaseUrl()
|
||||
@ -80,7 +80,7 @@ open class WebOverlayActivity : AppCompatActivity(),
|
||||
*/
|
||||
override fun onNewIntent(intent: Intent) {
|
||||
super.onNewIntent(intent)
|
||||
val newUrl = intent.extras!!.getString(ARG_URL).formattedFbUrl
|
||||
val newUrl = (intent.extras?.getString(ARG_URL) ?: intent.dataString).formattedFbUrl
|
||||
L.d("New intent")
|
||||
if (url != newUrl) {
|
||||
this.intent = intent
|
||||
|
@ -63,7 +63,7 @@ class WebFragment : Fragment() {
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
||||
super.onCreateView(inflater, container, savedInstanceState)
|
||||
frostWebView = FrostWebView(context)
|
||||
frostWebView.web.setupWebview(url, urlEnum)
|
||||
frostWebView.setupWebview(url, urlEnum)
|
||||
return frostWebView
|
||||
}
|
||||
|
||||
|
@ -9,7 +9,7 @@ import com.pitchedapps.frost.utils.L
|
||||
* The enum name must match the css file name
|
||||
*/
|
||||
enum class JsAssets : InjectorContract {
|
||||
MENU, CLICK_A, CLICK_INTERCEPTOR, HEADER_BADGES, SEARCH
|
||||
MENU, CLICK_A, CONTEXT_A, HEADER_BADGES, SEARCH
|
||||
;
|
||||
|
||||
var file = "${name.toLowerCase()}.min.js"
|
||||
@ -22,9 +22,4 @@ enum class JsAssets : InjectorContract {
|
||||
}
|
||||
injector!!.inject(webView, callback)
|
||||
}
|
||||
|
||||
fun reset() {
|
||||
injector = null
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -4,17 +4,14 @@ import android.content.Context
|
||||
import android.webkit.JavascriptInterface
|
||||
import com.pitchedapps.frost.MainActivity
|
||||
import com.pitchedapps.frost.dbflow.CookieModel
|
||||
import com.pitchedapps.frost.utils.L
|
||||
import com.pitchedapps.frost.utils.cookies
|
||||
import com.pitchedapps.frost.utils.launchLogin
|
||||
import com.pitchedapps.frost.utils.launchWebOverlay
|
||||
import com.pitchedapps.frost.utils.*
|
||||
import io.reactivex.subjects.Subject
|
||||
|
||||
|
||||
/**
|
||||
* Created by Allan Wang on 2017-06-01.
|
||||
*/
|
||||
class FrostJSI(val context: Context, val webView: FrostWebViewCore) {
|
||||
class FrostJSI(val context: Context, val webView: FrostWebViewCore, val contextMenu: FrostWebContextMenu) {
|
||||
|
||||
val headerObservable: Subject<String>? = (context as? MainActivity)?.headerBadgeObservable
|
||||
|
||||
@ -35,6 +32,11 @@ class FrostJSI(val context: Context, val webView: FrostWebViewCore) {
|
||||
}
|
||||
}
|
||||
|
||||
@JavascriptInterface
|
||||
fun contextMenu(url: String) {
|
||||
contextMenu.post { contextMenu.show(url) }
|
||||
}
|
||||
|
||||
@JavascriptInterface
|
||||
fun loadLogin() {
|
||||
context.launchLogin(cookies, true)
|
||||
|
@ -0,0 +1,100 @@
|
||||
package com.pitchedapps.frost.web
|
||||
|
||||
import android.content.Context
|
||||
import android.support.constraint.ConstraintLayout
|
||||
import android.support.constraint.ConstraintSet
|
||||
import android.text.method.ScrollingMovementMethod
|
||||
import android.util.AttributeSet
|
||||
import android.widget.TextView
|
||||
import ca.allanwang.kau.logging.KL
|
||||
import ca.allanwang.kau.utils.*
|
||||
import com.pitchedapps.frost.R
|
||||
import com.pitchedapps.frost.utils.Prefs
|
||||
|
||||
/**
|
||||
* Created by Allan Wang on 2017-07-06.
|
||||
*/
|
||||
class FrostWebContextMenu @JvmOverloads constructor(
|
||||
context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
|
||||
) : ConstraintLayout(context, attrs, defStyleAttr) {
|
||||
|
||||
var url = ""
|
||||
|
||||
val urlHolder = TextView(context, attrs, defStyleAttr)
|
||||
|
||||
init {
|
||||
layoutParams = LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)
|
||||
elevation = 20f
|
||||
setBackgroundColor(0x80000000.toInt())
|
||||
gone()
|
||||
|
||||
val tc = Prefs.textColor
|
||||
val bg = Prefs.bgColor.colorToForeground(0.1f).withAlpha(255)
|
||||
|
||||
urlHolder.apply {
|
||||
isVerticalScrollBarEnabled = true
|
||||
movementMethod = ScrollingMovementMethod()
|
||||
maxHeight = 60.dpToPx
|
||||
}
|
||||
addView(urlHolder)
|
||||
|
||||
//collection of items in our menu and their click event
|
||||
val data = arrayOf(
|
||||
R.string.copy_link to { context.copyToClipboard(url) }
|
||||
)
|
||||
|
||||
//add views and extract ids
|
||||
val views = data.map {
|
||||
(textId, onClick) ->
|
||||
val tv = TextView(context).apply {
|
||||
text = context.string(textId)
|
||||
setOnClickListener({ onClick(); close() })
|
||||
}
|
||||
addView(tv)
|
||||
tv
|
||||
}.toMutableList()
|
||||
|
||||
views.add(0, urlHolder)
|
||||
|
||||
val ids = views.mapIndexed { index, textView ->
|
||||
textView.apply {
|
||||
id = 74329 + index //totally arbitrary
|
||||
setTextColor(tc)
|
||||
setBackgroundColor(bg)
|
||||
}
|
||||
KL.d("ID ${textView.text}")
|
||||
textView.id
|
||||
}
|
||||
|
||||
//clone to set only after ids are set
|
||||
val set = ConstraintSet()
|
||||
set.clone(this)
|
||||
|
||||
ids.forEach {
|
||||
set.connect(it, ConstraintSet.START, ConstraintSet.PARENT_ID, ConstraintSet.START, 16)
|
||||
set.connect(it, ConstraintSet.END, ConstraintSet.PARENT_ID, ConstraintSet.END, 16)
|
||||
}
|
||||
|
||||
|
||||
set.createVerticalChain(ConstraintSet.PARENT_ID, ConstraintSet.TOP, ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM,
|
||||
ids.toIntArray(), null, ConstraintSet.CHAIN_PACKED)
|
||||
|
||||
set.applyTo(this)
|
||||
setOnClickListener {
|
||||
close()
|
||||
}
|
||||
}
|
||||
|
||||
fun close() {
|
||||
transitionAuto()
|
||||
gone()
|
||||
}
|
||||
|
||||
fun show(url: String) {
|
||||
this.url = url
|
||||
urlHolder.text = this.url
|
||||
transitionAuto()
|
||||
visible()
|
||||
}
|
||||
|
||||
}
|
@ -1,6 +1,8 @@
|
||||
package com.pitchedapps.frost.web
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
import android.os.Build
|
||||
import android.support.v4.widget.SwipeRefreshLayout
|
||||
import android.util.AttributeSet
|
||||
@ -25,7 +27,8 @@ class FrostWebView @JvmOverloads constructor(
|
||||
|
||||
val refresh: SwipeRefreshLayout by bindView(R.id.swipe_refresh)
|
||||
val web: FrostWebViewCore by bindView(R.id.frost_webview_core)
|
||||
val progress: ProgressBar by bindView(R.id.progressBar)
|
||||
val progress: ProgressBar by bindView(R.id.progress_bar)
|
||||
val contextMenu: FrostWebContextMenu by bindView(R.id.context_menu)
|
||||
|
||||
init {
|
||||
inflate(getContext(), R.layout.swipe_webview, this)
|
||||
@ -50,6 +53,26 @@ class FrostWebView @JvmOverloads constructor(
|
||||
})
|
||||
}
|
||||
|
||||
@SuppressLint("SetJavaScriptEnabled")
|
||||
fun setupWebview(url: String, enum: FbTab? = null) {
|
||||
with (web) {
|
||||
baseUrl = url
|
||||
baseEnum = enum
|
||||
with(settings) {
|
||||
javaScriptEnabled = true
|
||||
userAgentString = com.pitchedapps.frost.facebook.USER_AGENT_BASIC
|
||||
allowFileAccess = true
|
||||
defaultFontSize
|
||||
}
|
||||
setLayerType(View.LAYER_TYPE_HARDWARE, null)
|
||||
frostWebClient = baseEnum?.webClient?.invoke(this) ?: FrostWebViewClient(this)
|
||||
webViewClient = frostWebClient
|
||||
webChromeClient = FrostChromeClient(this)
|
||||
addJavascriptInterface(FrostJSI(context, this, contextMenu), "Frost")
|
||||
setBackgroundColor(Color.TRANSPARENT)
|
||||
}
|
||||
}
|
||||
|
||||
//Some urls have postJavascript injections so make sure we load the base url
|
||||
override fun onRefresh() {
|
||||
when (web.baseUrl) {
|
||||
|
@ -62,6 +62,7 @@ open class FrostWebViewClient(val webCore: FrostWebViewCore) : WebViewClient() {
|
||||
webCore.jsInject(CssHider.HEADER,
|
||||
Prefs.themeInjector,
|
||||
JsAssets.CLICK_A.maybe(webCore.baseEnum != null),
|
||||
// JsAssets.CONTEXT_A,
|
||||
callback = { refreshObservable.onNext(false) })
|
||||
}
|
||||
|
||||
|
@ -54,24 +54,6 @@ class FrostWebViewCore @JvmOverloads constructor(
|
||||
titleObservable = BehaviorSubject.create<String>()
|
||||
}
|
||||
|
||||
@SuppressLint("SetJavaScriptEnabled")
|
||||
fun setupWebview(url: String, enum: FbTab? = null) {
|
||||
baseUrl = url
|
||||
baseEnum = enum
|
||||
with (settings) {
|
||||
javaScriptEnabled = true
|
||||
userAgentString = USER_AGENT_BASIC
|
||||
allowFileAccess = true
|
||||
defaultFontSize
|
||||
}
|
||||
setLayerType(View.LAYER_TYPE_HARDWARE, null)
|
||||
frostWebClient = baseEnum?.webClient?.invoke(this) ?: FrostWebViewClient(this)
|
||||
webViewClient = frostWebClient
|
||||
webChromeClient = FrostChromeClient(this)
|
||||
addJavascriptInterface(FrostJSI(context, this), "Frost")
|
||||
setBackgroundColor(Color.TRANSPARENT)
|
||||
}
|
||||
|
||||
fun loadUrl(url: String?, animate: Boolean) {
|
||||
if (url == null) return
|
||||
registerTransition(animate)
|
||||
|
1
app/src/main/play/contactEmail
Normal file
1
app/src/main/play/contactEmail
Normal file
@ -0,0 +1 @@
|
||||
pitchedapps@gmail.com
|
1
app/src/main/play/defaultLanguage
Normal file
1
app/src/main/play/defaultLanguage
Normal file
@ -0,0 +1 @@
|
||||
en-CA
|
1
app/src/main/play/en-CA/listing/title
Normal file
1
app/src/main/play/en-CA/listing/title
Normal file
@ -0,0 +1 @@
|
||||
Frost for Facebook
|
@ -22,9 +22,14 @@
|
||||
</android.support.v4.widget.SwipeRefreshLayout>
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/progressBar"
|
||||
android:id="@+id/progress_bar"
|
||||
style="@style/FrostProgressBar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="top" />
|
||||
|
||||
<com.pitchedapps.frost.web.FrostWebContextMenu
|
||||
android:id="@+id/context_menu"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
</FrameLayout>
|
@ -11,8 +11,7 @@
|
||||
<item text="Clean up web overlay" />
|
||||
<item text="Allow customization of overlay swipe" />
|
||||
<item text="Add sharing menu options in the overlay app" />
|
||||
<item text="" />
|
||||
<item text="" />
|
||||
<item text="Improved rounding icons" />
|
||||
<item text="" />
|
||||
<item text="" />
|
||||
<item text="" />
|
||||
|
@ -5,6 +5,8 @@
|
||||
* Clean up web overlay
|
||||
* Allow customization of overlay swipe
|
||||
* Add sharing menu options in the overlay app
|
||||
* Allow long press for context menu on links
|
||||
* Improved rounding icons
|
||||
|
||||
## v1.1
|
||||
* Add universal experimental toggle
|
||||
|
@ -17,7 +17,7 @@ MIN_SDK=21
|
||||
TARGET_SDK=26
|
||||
BUILD_TOOLS=26.0.0
|
||||
|
||||
KAU=6555a738c4
|
||||
KAU=a8f0c6ddba
|
||||
KOTLIN=1.1.3
|
||||
MATERIAL_DRAWER=5.9.3
|
||||
MATERIAL_DRAWER_KT=1.0.4
|
||||
|
Loading…
Reference in New Issue
Block a user