mirror of
https://github.com/gnosygnu/xowa.git
synced 2025-06-01 06:54:20 +00:00
App_update: Add skip update
This commit is contained in:
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…
Reference in New Issue
Block a user