package Ġio . horizontal systems . bank wallet . core . storage Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Log Ċ import Ġandroidx . room . Database Ċ import Ġandroidx . room . Room Ċ import Ġandroidx . room . Room Database Ċ import Ġandroidx . room . Type Converters Ċ import Ġandroidx . room . migration . Migration Ċ import Ġandroidx . sqlite . db . Support SQLite Database Ċ import Ġio . horizontal systems . bank wallet . core . App Ċ import Ġio . horizontal systems . bank wallet . entities .* Ċ Ċ @ Database ( version Ġ= Ġ 1 4 , Ġexport Schema Ġ= Ġfalse , Ġentities Ġ= Ġ[ ĊĠĠĠ ĠRate :: class , ĊĠĠĠ ĠEnabled Wallet :: class , ĊĠĠĠ ĠPrice Alert Record :: class , ĊĠĠĠ ĠAccount Record :: class ] Ċ ) Ċ Ċ @ Type Converters ( Database Converters :: class ) Ċ abstract Ġclass ĠApp Database Ġ: ĠRoom Database () Ġ{ ĊĊĠĠĠ Ġabstract Ġfun Ġrates Dao (): ĠR ates Dao ĊĠĠĠ Ġabstract Ġfun Ġwallet s Dao (): ĠEnabled Wallet s Dao ĊĠĠĠ Ġabstract Ġfun Ġaccounts Dao (): ĠAccounts Dao ĊĠĠĠ Ġabstract Ġfun Ġprice Alerts Dao (): ĠPrice Alerts Dao ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Volatile ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠINSTANCE : ĠApp Database ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance ( context : ĠContext ): ĠApp Database Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠINSTANCE Ġ?: Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINSTANCE Ġ?: Ġbuild Database ( context ). also Ġ{ ĠINSTANCE Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġbuild Database ( context : ĠContext ): ĠApp Database Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRoom . database Builder ( context , ĠApp Database :: class . java , Ġ" db Bank Wallet ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. fallback To Dest ruct ive Migration () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. allow MainThread Queries () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Migrations ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM IG RATION _ 8 _ 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM IG RATION _ 9 _ 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM IG RATION _ 1 0 _ 1 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrename Coin D ai ToS ai , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove Coin Settings From Account To Wallet , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstore B ip To Preferences ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠM IG RATION _ 8 _ 9 : ĠMigration Ġ= Ġobject Ġ: ĠMigration ( 8 , Ġ 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmigrate ( database : ĠSupport SQLite Database ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . exec SQL (" ALTER ĠTABLE ĠAccount Record ĠADD ĠCOLUMN Ġ` deleted ` ĠINTEGER ĠNOT ĠNULL ĠDEFAULT Ġ 0 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠM IG RATION _ 9 _ 1 0 : ĠMigration Ġ= Ġobject Ġ: ĠMigration ( 9 , Ġ 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmigrate ( database : ĠSupport SQLite Database ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . exec SQL (" CREATE ĠTABLE ĠIF ĠNOT ĠEXISTS ĠPrice Alert Record Ġ(` coin Code ` ĠTEXT ĠNOT ĠNULL , Ġ` state Raw ` ĠINTEGER ĠNOT ĠNULL , Ġ` last Rate ` ĠTEXT , ĠPRIMARY ĠKEY (` coin Code ` )) ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠM IG RATION _ 1 0 _ 1 1 : ĠMigration Ġ= Ġobject Ġ: ĠMigration ( 1 0 , Ġ 1 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmigrate ( database : ĠSupport SQLite Database ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . exec SQL (" ALTER ĠTABLE ĠEnabled Wallet ĠR ENAME ĠTO ĠTemp Enabled Wallet ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . exec SQL (" CREATE ĠTABLE ĠIF ĠNOT ĠEXISTS Ġ` Enabled Wallet ` Ġ(` coin Id ` ĠTEXT ĠNOT ĠNULL , Ġ` accountId ` ĠTEXT ĠNOT ĠNULL , Ġ` wallet Order ` ĠINTEGER , Ġ` sync Mode ` ĠTEXT , ĠPRIMARY ĠKEY (` coin Id `, Ġ` accountId `), ĠFOREIGN ĠKEY (` accountId `) ĠREFERENCES Ġ` Account Record ` (` id `) ĠON ĠUPDATE ĠCASCADE ĠON ĠDELETE ĠCASCADE ĠDEF ERR ABLE ĠINIT I ALLY ĠDE FER RED )") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . exec SQL (" INSERT ĠINTO ĠEnabled Wallet Ġ(` coin Id `,` accountId `,` wallet Order `,` sync Mode `) ĠSELECT Ġ` coin Code `,` accountId `,` wallet Order `,` sync Mode ` ĠFROM ĠTemp Enabled Wallet ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . exec SQL (" DROP ĠTABLE ĠTemp Enabled Wallet ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġrename Coin D ai ToS ai : ĠMigration Ġ= Ġobject Ġ: ĠMigration ( 1 1 , Ġ 1 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmigrate ( database : ĠSupport SQLite Database ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . exec SQL (" INSERT ĠINTO ĠEnabled Wallet Ġ(` coin Id `,` accountId `,` wallet Order `,` sync Mode `) ĠSELECT Ġ' SA I ',` accountId `,` wallet Order `,` sync Mode ` ĠFROM ĠEnabled Wallet ĠWHERE Ġ` coin Id ` Ġ= Ġ' DA I '") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . exec SQL (" DELETE ĠFROM ĠEnabled Wallet ĠWHERE Ġ` coin Id ` Ġ= Ġ' DA I '") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġmove Coin Settings From Account To Wallet : ĠMigration Ġ= Ġobject Ġ: ĠMigration ( 1 2 , Ġ 1 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmigrate ( database : ĠSupport SQLite Database ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// create Ġnew Ġtables ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . exec SQL (""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCREATE ĠTABLE Ġnew _ Account Record Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` deleted ` ĠINTEGER ĠNOT ĠNULL , ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` id ` ĠTEXT ĠNOT ĠNULL , ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` name ` ĠTEXT ĠNOT ĠNULL , ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` type ` ĠTEXT ĠNOT ĠNULL , ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` origin ` ĠTEXT ĠNOT ĠNULL ĠDEFAULT Ġ'', ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` is Back ed Up ` ĠINTEGER ĠNOT ĠNULL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` words ` ĠTEXT , ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` salt ` ĠTEXT , ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` key ` ĠTEXT , ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` eos Account ` ĠTEXT , ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPRIMARY ĠKEY (` id `) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . exec SQL (""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġnew _ Account Record Ġ(` deleted `,` id `,` name `,` type `,` is Back ed Up `,` words `,` salt `,` key `,` eos Account `) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT Ġ` deleted `,` id `,` name `,` type `,` is Back ed Up `,` words `,` salt `,` key `,` eos Account ` ĠFROM ĠAccount Record ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . exec SQL (""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCREATE ĠTABLE Ġnew _ Enabled Wallet Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` coin Id ` ĠTEXT ĠNOT ĠNULL , ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` accountId ` ĠTEXT ĠNOT ĠNULL , ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` wallet Order ` ĠINTEGER , ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` sync Mode ` ĠTEXT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ` der ivation ` ĠTEXT , ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPRIMARY ĠKEY (` coin Id `, Ġ` accountId `), ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFOREIGN ĠKEY (` accountId `) ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠREFERENCES Ġ` Account Record ` (` id `) ĠON ĠUPDATE ĠCASCADE ĠON ĠDELETE ĠCASCADE ĠDEF ERR ABLE ĠINIT I ALLY ĠDE FER RED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . exec SQL (""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġnew _ Enabled Wallet Ġ(` coin Id `,` accountId `,` wallet Order `) ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT Ġ` coin Id `,` accountId `,` wallet Order ` ĠFROM ĠEnabled Wallet ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// update Ġfields ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġold Sync Mode : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġold Der ivation : ĠString ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaccounts Cursor Ġ= Ġdatabase . query (" SELECT Ġ* ĠFROM ĠAccount Record ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( accounts Cursor . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġaccounts Cursor . getColumnIndex (" id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsync Mode Ġ= Ġaccounts Cursor . getColumnIndex (" sync Mode ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġder ivation Column Id Ġ= Ġaccounts Cursor . getColumnIndex (" der ivation ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id Ġ>= Ġ 0 Ġ&& Ġsync Mode Ġ>= Ġ 0 Ġ&& Ġder ivation Column Id Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠitemId Ġ= Ġaccounts Cursor . getString ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Sync Mode Ġ= Ġaccounts Cursor . getString ( sync Mode ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġorigin Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Sync Mode . de capitalize () Ġ== ĠSync Mode . New . value . de capitalize () Ġ-> ĠAccount Origin . Created . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠAccount Origin . Restore d . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Der ivation Ġ= Ġaccounts Cursor . getString ( der ivation Column Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . exec SQL (""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUPDATE Ġnew _ Account Record ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSET Ġorigin Ġ= Ġ'$ origin ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWHERE Ġ` id ` Ġ= Ġ'$ itemId '; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwallet s Cursor Ġ= Ġdatabase . query (" SELECT Ġ* ĠFROM ĠEnabled Wallet ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġwallet Sync Mode : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( wallet s Cursor . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcoin Id Column Index Ġ= Ġwallet s Cursor . getColumnIndex (" coin Id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( coin Id Column Index Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcoin Id Ġ= Ġwallet s Cursor . getString ( coin Id Column Index ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsync Mode Column Index Ġ= Ġwallet s Cursor . getColumnIndex (" sync Mode ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sync Mode Column Index Ġ>= Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwallet Sync Mode Ġ= Ġwallet s Cursor . getString ( sync Mode Column Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( old Der ivation Ġ!= Ġnull Ġ&& Ġcoin Id Ġ== Ġ" BTC ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . exec SQL (""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUPDATE Ġnew _ Enabled Wallet ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSET Ġder ivation Ġ= Ġ'$ old Der ivation ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWHERE Ġcoin Id Ġ= Ġ'$ coin Id '; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( coin Id Ġ== Ġ" BTC " Ġ|| Ġcoin Id Ġ== Ġ" B CH " Ġ|| Ġcoin Id Ġ== Ġ" DASH " Ġ|| Ġcoin Id Ġ== Ġ" GR S ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnew Sync Mode Ġ= ĠSync Mode . Fast ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwallet Sync Mode ?. toLowerCase ()?. capitalize ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Sync Mode Ġ= ĠSync Mode . valueOf ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// invalid Ġvalue Ġfor ĠEnum , Ġuse Ġdefault Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . exec SQL (""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUPDATE Ġnew _ Enabled Wallet ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSET Ġsync Mode Ġ= Ġ'${ new Sync Mode . value }' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWHERE Ġcoin Id Ġ= Ġ'$ coin Id '; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// rename Ġtables Ġand Ġdrop Ġold Ġones ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . exec SQL (" DROP ĠTABLE ĠAccount Record ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . exec SQL (" DROP ĠTABLE ĠEnabled Wallet ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . exec SQL (" ALTER ĠTABLE Ġnew _ Account Record ĠR ENAME ĠTO ĠAccount Record ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . exec SQL (" ALTER ĠTABLE Ġnew _ Enabled Wallet ĠR ENAME ĠTO ĠEnabled Wallet ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġstore B ip To Preferences : ĠMigration Ġ= Ġobject Ġ: ĠMigration ( 1 3 , Ġ 1 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmigrate ( database : ĠSupport SQLite Database ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwallet s Cursor Ġ= Ġdatabase . query (" SELECT Ġ* ĠFROM ĠEnabled Wallet ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( wallet s Cursor . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcoin Id Column Index Ġ= Ġwallet s Cursor . getColumnIndex (" coin Id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( coin Id Column Index Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcoin Id Ġ= Ġwallet s Cursor . getString ( coin Id Column Index ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( coin Id Ġ== Ġ" BTC " Ġ|| Ġcoin Id Ġ== Ġ" GR S ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġder ivation Column Index Ġ= Ġwallet s Cursor . getColumnIndex (" der ivation ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( der ivation Column Index Ġ>= Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwallet Der ivation = Ġwallet s Cursor . getString ( der ivation Column Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( wallet Der ivation Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġder ivation Ġ= ĠAccount Type . Der ivation . valueOf ( wallet Der ivation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp . localStorage . bitcoin Der ivation Ġ= Ġder ivation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" App Database ", Ġ" migration Ġ 1 3 - 1 4 Ġexception ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} Ċ } Ċ