App_update: Add skip update

pull/620/head
gnosygnu 8 years ago
parent 0ef1a82a16
commit 200356d8ff

@ -17,6 +17,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package gplx.xowa.addons.apps.updates; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; package gplx.xowa.addons.apps.updates; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*;
import gplx.xowa.addons.apps.cfgs.*; import gplx.xowa.addons.apps.cfgs.*;
import gplx.xowa.addons.apps.updates.dbs.*;
public class Xoa_update_startup { public class Xoa_update_startup {
public static boolean Show_at_startup(Xoa_app app) { public static boolean Show_at_startup(Xoa_app app) {
try { try {
@ -24,32 +25,23 @@ public class Xoa_update_startup {
Xocfg_mgr cfg = app.Cfg(); Xocfg_mgr cfg = app.Cfg();
if (!cfg.Get_bool_app_or(Cfg__enabled, true)) return false; if (!cfg.Get_bool_app_or(Cfg__enabled, true)) return false;
// get inet_interval and date // check online for updates
int inet_interval = cfg.Get_int_app_or(Cfg__inet_interval, 7); Io_url db_url = Xoa_update_db_mgr_.Url(app);
DateAdp inet_date = cfg.Get_date_app_or(Cfg__inet_date, DateAdp_.MinValue); if (Xoa_update_db_mgr_.Download_from_inet(app, Bool_.Y, db_url))
// if enough time has passed, check internet for update_db
Io_url db_url = Xoa_update_db.Url(app);
if (Datetime_now.Get().Diff_days(inet_date) > inet_interval) {
Xoa_update_db.Download_from_inet(app, db_url);
cfg.Set_date_app(Cfg__inet_date, Datetime_now.Get());
return true; return true;
}
// check if there are versions to update // check offline for updates
DateAdp cutoff_date = cfg.Get_date_app_or(Cfg__cutoff_date, DateAdp_.parse_fmt(Xoa_app_.Build_date, Xoa_app_.Build_date_fmt)); DateAdp ignore_date = cfg.Get_date_app_or(Cfg__ignore_date, DateAdp_.parse_fmt(Xoa_app_.Build_date, Xoa_app_.Build_date_fmt));
if (Xoa_update_db.Select(db_url, cutoff_date).length > 0) if (Xoa_update_db_mgr_.Select(db_url, ignore_date).length > 0)
return true; return true;
} catch (Exception exc) {Gfo_usr_dlg_.Instance.Warn_many("", "", "starup:fatal error while looking up app-update-reminder; err=~{0}", Err_.Message_gplx_log(exc));} } catch (Exception exc) {Gfo_usr_dlg_.Instance.Warn_many("", "", "starup:fatal error while looking up app-update-reminder; err=~{0}", Err_.Message_gplx_log(exc));}
return false; return false;
} }
public static void Set_cutoff_date_to_now(Xoa_app app) { public static void Set_ignore_date_to_now(Xoa_app app) {
app.Cfg().Set_date_app(Cfg__cutoff_date, Datetime_now.Get()); app.Cfg().Set_date_app(Cfg__ignore_date, Datetime_now.Get());
} }
private static final String private static final String
Cfg__enabled = "xowa.app.update.startup.enabled" Cfg__enabled = "xowa.app.update.startup.enabled"
, Cfg__inet_interval = "xowa.app.update.startup.inet_interval" , Cfg__ignore_date = "xowa.app.update.startup.ignore_date";
, Cfg__inet_date = "xowa.app.update.startup.inet_date"
, Cfg__cutoff_date = "xowa.app.update.startup.cutoff_date";
} }

@ -15,22 +15,31 @@ GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
package gplx.xowa.addons.apps.updates; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; package gplx.xowa.addons.apps.updates.dbs; import gplx.*; import gplx.xowa.*; import gplx.xowa.addons.*; import gplx.xowa.addons.apps.*; import gplx.xowa.addons.apps.updates.*;
import gplx.xowa.addons.apps.updates.dbs.*; import gplx.xowa.addons.apps.cfgs.*;
public class Xoa_update_db { public class Xoa_update_db_mgr_ {
public static Io_url Url(Xoa_app app) {return app.Fsys_mgr().Root_dir().GenSubFil_nest("user", "install", "update", "xoa_update.sqlite3");} public static Io_url Url(Xoa_app app) {return app.Fsys_mgr().Root_dir().GenSubFil_nest("user", "install", "update", "xoa_update.sqlite3");}
public static Xoa_app_version_itm[] Select(Io_url db_url, DateAdp cutoff_date) { public static Xoa_app_version_itm[] Select(Io_url db_url, DateAdp cutoff_date) {
Xoa_update_db_mgr db_mgr = new Xoa_update_db_mgr(db_url); Xoa_update_db_mgr db_mgr = new Xoa_update_db_mgr(db_url);
return db_mgr.Tbl__app_version().Select_by_date(cutoff_date.XtoStr_fmt_yyyy_MM_dd_HH_mm_ss()); return db_mgr.Tbl__app_version().Select_by_date(cutoff_date.XtoStr_fmt_yyyy_MM_dd_HH_mm_ss());
} }
public static boolean Download_from_inet(Xoa_app app, Io_url db_url) { public static boolean Download_from_inet(Xoa_app app, boolean exit_if_too_soon, Io_url db_url) {
// exit if web_access disabled // exit if web_access disabled
if (!gplx.core.ios.IoEngine_system.Web_access_enabled) return false; if (!gplx.core.ios.IoEngine_system.Web_access_enabled) return false;
// exit if inet checked too soon
if (exit_if_too_soon) {
Xocfg_mgr cfg = app.Cfg();
int inet_interval = cfg.Get_int_app_or(Cfg__inet_interval, 7);
DateAdp inet_date = cfg.Get_date_app_or(Cfg__inet_date, DateAdp_.MinValue);
if (Datetime_now.Get().Diff_days(inet_date) < inet_interval) return false;
cfg.Set_date_app(Cfg__inet_date, Datetime_now.Get());
}
// check text file to see if version changed // check text file to see if version changed
Io_url trg_summary_fil = db_url.OwnerDir().GenSubFil("xoa_update.txt"); Io_url trg_summary_fil = db_url.OwnerDir().GenSubFil("xoa_update.txt");
int trg_summary_version = Bry_.To_int_or(Io_mgr.Instance.LoadFilBryOr(trg_summary_fil, Bry_.new_a7("-1")), -1); int trg_summary_version = Bry_.To_int_or(Io_mgr.Instance.LoadFilBryOr(trg_summary_fil, Bry_.new_a7("-1")), -1);
String src_summary_server = app.Cfg().Get_str_app_or("xowa.app.update.server_url", "http://xowa.org"); // CFG:Cfg__ String src_summary_server = app.Cfg().Get_str_app_or("xowa.app.inet.server_url", "http://xowa.org"); // CFG:Cfg__
byte[] src_summary_bry = Io_mgr.Instance.DownloadFil_args("", Io_url_.Empty).Exec_as_bry(src_summary_server + "/admin/app_update/xoa_update.txt"); byte[] src_summary_bry = Io_mgr.Instance.DownloadFil_args("", Io_url_.Empty).Exec_as_bry(src_summary_server + "/admin/app_update/xoa_update.txt");
if (src_summary_bry == null) return false; if (src_summary_bry == null) return false;
int src_summary_version = Bry_.To_int(src_summary_bry); int src_summary_version = Bry_.To_int(src_summary_bry);
@ -44,4 +53,7 @@ public class Xoa_update_db {
} }
return true; return true;
} }
private static final String
Cfg__inet_interval = "xowa.app.update.inet.check_interval"
, Cfg__inet_date = "xowa.app.update.inet.check_date";
} }

@ -42,11 +42,9 @@ public class Xojs_wkr__replace extends Xojs_wkr__base {
} catch (Exception exc) { } catch (Exception exc) {
Gfo_usr_dlg_.Instance.Log_many("failed to delete and move file; file=~{0} msg=~{1}", trg_fil.Raw(), Err_.Message_gplx_log(exc)); Gfo_usr_dlg_.Instance.Log_many("failed to delete and move file; file=~{0} msg=~{1}", trg_fil.Raw(), Err_.Message_gplx_log(exc));
failed_list.Add(Keyval_.new_(src_fil.Raw(), trg_fil.Raw())); failed_list.Add(Keyval_.new_(src_fil.Raw(), trg_fil.Raw()));
try {
Io_mgr.Instance.CopyFil(src_fil, trg_fil, true); // try to copy file anyway // try {Io_mgr.Instance.CopyFil(src_fil, trg_fil, true);} // try to copy file anyway
} catch (Exception exc2) { // catch (Exception exc2) {Gfo_usr_dlg_.Instance.Log_many("failed to fopy file; file=~{0} msg=~{1}", trg_fil.Raw(), Err_.Message_gplx_log(exc2));}
Gfo_usr_dlg_.Instance.Log_many("failed to fopy file; file=~{0} msg=~{1}", trg_fil.Raw(), Err_.Message_gplx_log(exc2));
}
} }
} }

@ -25,14 +25,14 @@ public class Xoa_update_html extends Xow_special_wtr__base {
return Load(app); return Load(app);
} }
private static Mustache_doc_itm Load(Xoa_app app) { private static Mustache_doc_itm Load(Xoa_app app) {
Io_url db_url = Xoa_update_db.Url(app); Io_url db_url = Xoa_update_db_mgr_.Url(app);
// get from internet // get from internet
boolean web_access_enabled = gplx.core.ios.IoEngine_system.Web_access_enabled; boolean web_access_enabled = gplx.core.ios.IoEngine_system.Web_access_enabled;
Xoa_update_db.Download_from_inet(app, db_url); Xoa_update_db_mgr_.Download_from_inet(app, Bool_.N, db_url);
// load from db // load from db
Xoa_app_version_itm[] db_itms = Xoa_update_db.Select(db_url, DateAdp_.parse_fmt(Xoa_app_.Build_date, Xoa_app_.Build_date_fmt)); Xoa_app_version_itm[] db_itms = Xoa_update_db_mgr_.Select(db_url, DateAdp_.parse_fmt(Xoa_app_.Build_date, Xoa_app_.Build_date_fmt));
// build root // build root
String check_date = app.Cfg().Get_str_app_or("xowa.app.update.startup.inet_date", null); // CFG:Cfg__ String check_date = app.Cfg().Get_str_app_or("xowa.app.update.startup.inet_date", null); // CFG:Cfg__

@ -28,16 +28,16 @@ public class Xoa_update_bridge implements Bridge_cmd_itm {
Xoa_update_svc svc = new Xoa_update_svc(app); Xoa_update_svc svc = new Xoa_update_svc(app);
switch (proc_id) { switch (proc_id) {
case Proc__exec: svc.Exec(args.Get_as_str("version"));break; case Proc__install: svc.Install(args.Get_as_str("version"));break;
case Proc__skip: svc.Skip(); break; case Proc__skip: svc.Skip(); break;
default: throw Err_.new_unhandled_default(proc_id); default: throw Err_.new_unhandled_default(proc_id);
} }
return ""; return "";
} }
private static final byte Proc__exec = 0, Proc__skip = 1; private static final byte Proc__install = 0, Proc__skip = 1;
private static final Hash_adp_bry proc_hash = Hash_adp_bry.cs() private static final Hash_adp_bry proc_hash = Hash_adp_bry.cs()
.Add_str_byte("exec" , Proc__exec) .Add_str_byte("install" , Proc__install)
.Add_str_byte("skip" , Proc__skip) .Add_str_byte("skip" , Proc__skip)
; ;

@ -25,7 +25,7 @@ class Xoa_update_svc implements Gfo_invk {
private Xoa_app app; private Xoa_app app;
private Io_url app_root_dir, update_dir, update_jar_fil; private Io_url app_root_dir, update_dir, update_jar_fil;
public Xoa_update_svc(Xoa_app app) {this.app = app;} public Xoa_update_svc(Xoa_app app) {this.app = app;}
public void Exec(String version_name) { public void Install(String version_name) {
// get app_version from db // get app_version from db
this.app_root_dir = app.Fsys_mgr().Root_dir(); this.app_root_dir = app.Fsys_mgr().Root_dir();
this.update_dir = app_root_dir.GenSubDir_nest("user", "install", "update"); this.update_dir = app_root_dir.GenSubDir_nest("user", "install", "update");
@ -46,7 +46,7 @@ class Xoa_update_svc implements Gfo_invk {
download_wkr.Exec_async("app_updater"); download_wkr.Exec_async("app_updater");
} }
public void Skip() { public void Skip() {
Xoa_update_startup.Set_cutoff_date_to_now(app); Xoa_update_startup.Set_ignore_date_to_now(app);
} }
private void On_download_done(GfoMsg m) { private void On_download_done(GfoMsg m) {
Xojs_wkr__download download_wkr = (Xojs_wkr__download)m.ReadObj("v"); Xojs_wkr__download download_wkr = (Xojs_wkr__download)m.ReadObj("v");

Loading…
Cancel
Save