1
0
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:
Allan Wang 2017-07-07 03:26:55 -04:00 committed by GitHub
parent bb70ed737d
commit 6adfc49637
31 changed files with 258 additions and 85 deletions

View File

@ -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'

View File

@ -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%; }

View File

@ -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%;
}

View File

@ -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; }

View File

@ -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; }

View File

@ -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; }

View File

@ -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; }

View File

@ -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; }

View File

@ -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);
}

View File

@ -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)
}

View File

@ -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);
}

View File

@ -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);
}

View 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
View 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)
}

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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
}

View File

@ -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
}
}

View File

@ -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)

View File

@ -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()
}
}

View File

@ -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) {

View File

@ -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) })
}

View File

@ -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)

View File

@ -0,0 +1 @@
pitchedapps@gmail.com

View File

@ -0,0 +1 @@
en-CA

View File

@ -0,0 +1 @@
Frost for Facebook

View File

@ -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>

View File

@ -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="" />

View File

@ -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

View File

@ -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