mirror of
https://github.com/gnosygnu/xowa.git
synced 2025-05-30 22:14:38 +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.*;
|
||||
import gplx.xowa.addons.apps.cfgs.*;
|
||||
import gplx.xowa.addons.apps.updates.dbs.*;
|
||||
public class Xoa_update_startup {
|
||||
public static boolean Show_at_startup(Xoa_app app) {
|
||||
try {
|
||||
@ -24,32 +25,23 @@ public class Xoa_update_startup {
|
||||
Xocfg_mgr cfg = app.Cfg();
|
||||
if (!cfg.Get_bool_app_or(Cfg__enabled, true)) return false;
|
||||
|
||||
// get inet_interval and date
|
||||
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 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());
|
||||
// check online for updates
|
||||
Io_url db_url = Xoa_update_db_mgr_.Url(app);
|
||||
if (Xoa_update_db_mgr_.Download_from_inet(app, Bool_.Y, db_url))
|
||||
return true;
|
||||
}
|
||||
|
||||
// check if there are versions to update
|
||||
DateAdp cutoff_date = cfg.Get_date_app_or(Cfg__cutoff_date, DateAdp_.parse_fmt(Xoa_app_.Build_date, Xoa_app_.Build_date_fmt));
|
||||
if (Xoa_update_db.Select(db_url, cutoff_date).length > 0)
|
||||
// check offline for updates
|
||||
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_mgr_.Select(db_url, ignore_date).length > 0)
|
||||
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));}
|
||||
return false;
|
||||
}
|
||||
public static void Set_cutoff_date_to_now(Xoa_app app) {
|
||||
app.Cfg().Set_date_app(Cfg__cutoff_date, Datetime_now.Get());
|
||||
public static void Set_ignore_date_to_now(Xoa_app app) {
|
||||
app.Cfg().Set_date_app(Cfg__ignore_date, Datetime_now.Get());
|
||||
}
|
||||
|
||||
private static final String
|
||||
Cfg__enabled = "xowa.app.update.startup.enabled"
|
||||
, Cfg__inet_interval = "xowa.app.update.startup.inet_interval"
|
||||
, Cfg__inet_date = "xowa.app.update.startup.inet_date"
|
||||
, Cfg__cutoff_date = "xowa.app.update.startup.cutoff_date";
|
||||
, Cfg__ignore_date = "xowa.app.update.startup.ignore_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
|
||||
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.*;
|
||||
import gplx.xowa.addons.apps.updates.dbs.*;
|
||||
public class Xoa_update_db {
|
||||
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.cfgs.*;
|
||||
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 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);
|
||||
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
|
||||
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
|
||||
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);
|
||||
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");
|
||||
if (src_summary_bry == null) return false;
|
||||
int src_summary_version = Bry_.To_int(src_summary_bry);
|
||||
@ -44,4 +53,7 @@ public class Xoa_update_db {
|
||||
}
|
||||
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) {
|
||||
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()));
|
||||
try {
|
||||
Io_mgr.Instance.CopyFil(src_fil, trg_fil, true); // try to copy file anyway
|
||||
} 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));
|
||||
}
|
||||
|
||||
// try {Io_mgr.Instance.CopyFil(src_fil, trg_fil, true);} // try to copy file anyway
|
||||
// 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));}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -25,14 +25,14 @@ public class Xoa_update_html extends Xow_special_wtr__base {
|
||||
return Load(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
|
||||
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
|
||||
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
|
||||
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);
|
||||
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;
|
||||
default: throw Err_.new_unhandled_default(proc_id);
|
||||
}
|
||||
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()
|
||||
.Add_str_byte("exec" , Proc__exec)
|
||||
.Add_str_byte("install" , Proc__install)
|
||||
.Add_str_byte("skip" , Proc__skip)
|
||||
;
|
||||
|
||||
|
@ -25,7 +25,7 @@ class Xoa_update_svc implements Gfo_invk {
|
||||
private Xoa_app app;
|
||||
private Io_url app_root_dir, update_dir, update_jar_fil;
|
||||
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
|
||||
this.app_root_dir = app.Fsys_mgr().Root_dir();
|
||||
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");
|
||||
}
|
||||
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) {
|
||||
Xojs_wkr__download download_wkr = (Xojs_wkr__download)m.ReadObj("v");
|
||||
|
Loading…
Reference in New Issue
Block a user