Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Ablota
Store
App
Commits
316bc7b2
Verified
Commit
316bc7b2
authored
Dec 29, 2020
by
FabioWidmer
Browse files
Improve formatting
parent
6b046fef
Changes
25
Hide whitespace changes
Inline
Side-by-side
src/components/app.vue
View file @
316bc7b2
<
template
>
<
template
>
<f7-app
:params=
"f7params"
>
<f7-app
:params=
"f7params"
>
<f7-views
class=
"safe-areas"
>
<f7-views
class=
"safe-areas"
>
<f7-view
main
url=
"/"
:push-state=
"pushState"
:stack-pages=
"true"
:routes=
"routes
"
></f7-view>
<f7-view
:push-state=
"pushState"
:routes=
"routes"
:stack-pages=
"true"
main
url=
"/
"
></f7-view>
</f7-views>
</f7-views>
</f7-app>
</f7-app>
</
template
>
</
template
>
<
script
>
<
script
>
import
{
Device
}
from
'
framework7/framework7-lite.esm.bundle.js
'
;
import
{
Device
}
from
'
framework7/framework7-lite.esm.bundle.js
'
;
import
cordovaApp
from
'
../js/cordova-app.js
'
;
import
cordovaApp
from
'
../js/cordova-app.js
'
;
import
routes
from
'
../js/routes.js
'
;
import
routes
from
'
../js/routes.js
'
;
export
default
{
export
default
{
data
()
{
data
()
{
return
{
return
{
pushState
:
!
Device
.
cordova
,
pushState
:
!
Device
.
cordova
,
routes
,
routes
,
f7params
:
{
f7params
:
{
id
:
'
com.ablota.store
'
,
id
:
'
com.ablota.store
'
,
name
:
'
Ablota Store
'
,
name
:
'
Ablota Store
'
,
version
:
'
1.0.1
'
,
version
:
'
1.0.1
'
,
theme
:
'
auto
'
,
theme
:
'
auto
'
,
data
:
function
()
{
data
:
function
()
{
return
{
return
{
url
:
'
https://store.ablota.com/
'
,
url
:
'
https://store.ablota.com/
'
,
server
:
{
server
:
{
url
:
'
https://api.store.ablota.com/
'
url
:
'
https://api.store.ablota.com/
'
,
},
},
deviceInfo
:
null
,
deviceInfo
:
null
,
};
};
},
autoDarkTheme
:
true
,
serviceWorker
:
Device
.
cordova
?
{}
:
{
path
:
'
/service-worker.js
'
,
},
input
:
{
scrollIntoViewOnFocus
:
Device
.
cordova
&&
!
Device
.
electron
,
scrollIntoViewCentered
:
Device
.
cordova
&&
!
Device
.
electron
,
},
statusbar
:
{
enabled
:
false
,
},
toast
:
{
closeButton
:
true
,
closeButtonText
:
this
.
$t
(
'
words.ok
'
),
closeTimeout
:
5000
,
destroyonClose
:
true
,
},
dialog
:
{
buttonOk
:
this
.
$t
(
'
words.ok
'
),
buttonCancel
:
this
.
$t
(
'
words.cancel
'
),
},
photoBrowser
:
{
routableModals
:
false
,
type
:
'
popup
'
,
pageBackLinkText
:
this
.
$t
(
'
words.back
'
),
popupCloseLinkText
:
this
.
$t
(
'
words.ok
'
),
navbarOfText
:
this
.
$t
(
'
words.of
'
),
},
lazy
:
{
sequential
:
false
,
},
touch
:
{
tapHold
:
true
,
},
},
},
};
autoDarkTheme
:
true
,
},
serviceWorker
:
Device
.
cordova
?
{}
:
{
path
:
'
/service-worker.js
'
,
},
input
:
{
scrollIntoViewOnFocus
:
Device
.
cordova
&&
!
Device
.
electron
,
scrollIntoViewCentered
:
Device
.
cordova
&&
!
Device
.
electron
,
},
statusbar
:
{
enabled
:
false
,
},
toast
:
{
closeButton
:
true
,
closeButtonText
:
this
.
$t
(
'
words.ok
'
),
closeTimeout
:
5000
,
destroyonClose
:
true
,
},
dialog
:
{
buttonOk
:
this
.
$t
(
'
words.ok
'
),
buttonCancel
:
this
.
$t
(
'
words.cancel
'
),
},
photoBrowser
:
{
routableModals
:
false
,
type
:
'
popup
'
,
pageBackLinkText
:
this
.
$t
(
'
words.back
'
),
popupCloseLinkText
:
this
.
$t
(
'
words.ok
'
),
navbarOfText
:
this
.
$t
(
'
words.of
'
),
},
lazy
:
{
sequential
:
false
,
},
touch
:
{
tapHold
:
true
,
},
},
};
},
mounted
()
{
mounted
()
{
this
.
$f7ready
((
f7
)
=>
{
this
.
$f7ready
((
f7
)
=>
{
if
(
Device
.
cordova
)
{
if
(
Device
.
cordova
)
{
cordovaApp
.
init
(
f7
);
cordovaApp
.
init
(
f7
);
}
}
this
.
$store
.
dispatch
(
'
load
'
,
{
this
.
$store
.
dispatch
(
'
load
'
,
{
server
:
this
.
$f7
.
data
.
server
,
server
:
this
.
$f7
.
data
.
server
,
sourceAge
:
this
.
$store
.
state
.
settings
.
sourceAge
,
sourceAge
:
this
.
$store
.
state
.
settings
.
sourceAge
,
warningCallback
:
(
error
,
payload
=
{})
=>
this
.
$f7
.
dialog
.
alert
(
this
.
$t
(
error
,
payload
)),
warningCallback
:
(
error
,
payload
=
{})
=>
this
.
$f7
.
dialog
.
alert
(
this
.
$t
(
error
,
payload
)),
});
});
});
},
});
};
},
};
</
script
>
</
script
>
src/components/popovers/antifeatures.vue
View file @
316bc7b2
<
template
>
<
template
>
<div
class=
"popover-antifeatures"
>
<div
class=
"popover-antifeatures"
>
<f7-popover
:class=
"`popover-antifeatures-$
{key}`"
v-for="(antiFeature, key) in $t('lists.antiFeatures')" :key="key">
<f7-popover
v-for=
"(antiFeature, key) in $t('lists.antiFeatures')"
:key=
"key"
:class=
"`popover-antifeatures-$
{key}`"
>
<f7-block><p>
{{
antiFeature
.
description
}}
</p></f7-block>
<f7-block><p>
{{
antiFeature
.
description
}}
</p></f7-block>
<f7-list>
<f7-list>
<f7-list-item
:footer=
"antiFeature.key"
:link=
"`https://f-droid.org/docs/Anti-Features/#$
{key}`" :title="$t('words.more')" external popover-close target="_system">
<f7-list-item
:footer=
"antiFeature.key"
:link=
"`https://f-droid.org/docs/Anti-Features/#$
{key}`" :title="$t('words.more')" external popover-close target="_system">
<f7-icon
aurora=
"f7:link"
ios=
"f7:link"
md=
"material:link"
slot=
"media"
></f7-icon>
<f7-icon
slot=
"media"
aurora=
"f7:link"
ios=
"f7:link"
md=
"material:link"
></f7-icon>
</f7-list-item>
</f7-list-item>
</f7-list>
</f7-list>
</f7-popover>
</f7-popover>
...
...
src/components/popups/downloadapp.vue
View file @
316bc7b2
...
@@ -14,7 +14,7 @@
...
@@ -14,7 +14,7 @@
<div
class=
"timeline-item-inner"
>
<div
class=
"timeline-item-inner"
>
<div
class=
"timeline-item-title"
>
{{
$t
(
'
words.download
'
)
}}
</div>
<div
class=
"timeline-item-title"
>
{{
$t
(
'
words.download
'
)
}}
</div>
<div
class=
"timeline-item-text"
>
{{
$t
(
'
popups.downloadApp.steps.download.description
'
)
}}
</div>
<div
class=
"timeline-item-text"
>
{{
$t
(
'
popups.downloadApp.steps.download.description
'
)
}}
</div>
<f7-button
href=
"https://ablota.com/repo/Ablota_Store.apk"
:text=
"$t('words.download')"
fill
raised
external
></f7-button>
<f7-button
:text=
"$t('words.download')"
external
fill
href=
"https://ablota.com/repo/Ablota_Store.apk"
raised
></f7-button>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -45,7 +45,7 @@
...
@@ -45,7 +45,7 @@
<div
class=
"timeline-item-inner"
>
<div
class=
"timeline-item-inner"
>
<div
class=
"timeline-item-title"
>
{{
$t
(
'
words.done
'
)
}}
</div>
<div
class=
"timeline-item-title"
>
{{
$t
(
'
words.done
'
)
}}
</div>
<div
class=
"timeline-item-text"
>
{{
$t
(
'
popups.downloadApp.steps.done.description
'
)
}}
</div>
<div
class=
"timeline-item-text"
>
{{
$t
(
'
popups.downloadApp.steps.done.description
'
)
}}
</div>
<f7-button
href=
"https://store.ablota.com"
:text=
"$t('words.launch')"
fill
raised
external
></f7-button>
<f7-button
:text=
"$t('words.launch')"
external
fill
href=
"https://store.ablota.com"
raised
></f7-button>
</div>
</div>
</div>
</div>
</div>
</div>
...
...
src/css/app.scss
View file @
316bc7b2
...
@@ -2,8 +2,9 @@ $icon-sizes: 20, 30, 40, 50, 60;
...
@@ -2,8 +2,9 @@ $icon-sizes: 20, 30, 40, 50, 60;
/* iOS Cordova Tweak */
/* iOS Cordova Tweak */
.device-cordova.device-ios
{
.device-cordova.device-ios
{
height
:
100vh
;
height
:
100vh
;
}
}
/* Your app custom styles here */
/* Your app custom styles here */
body
{
body
{
...
@@ -80,6 +81,7 @@ body {
...
@@ -80,6 +81,7 @@ body {
.item-inner
{
.item-inner
{
padding
:
0
;
padding
:
0
;
}
}
.item-subtitle
p
{
.item-subtitle
p
{
margin-top
:
0
;
margin-top
:
0
;
}
}
...
...
src/css/icons.css
View file @
316bc7b2
/* Material Icons Font (for MD theme) */
/* Material Icons Font (for MD theme) */
@font-face
{
@font-face
{
font-family
:
'Material Icons'
;
font-family
:
'Material Icons'
;
font-style
:
normal
;
font-style
:
normal
;
font-weight
:
400
;
font-weight
:
400
;
src
:
url(../fonts/MaterialIcons-Regular.eot)
;
src
:
url(../fonts/MaterialIcons-Regular.eot)
;
src
:
local
(
'Material Icons'
),
src
:
local
(
'Material Icons'
),
local
(
'MaterialIcons-Regular'
),
local
(
'MaterialIcons-Regular'
),
url(../fonts/MaterialIcons-Regular.woff2)
format
(
'woff2'
),
url(../fonts/MaterialIcons-Regular.woff2)
format
(
'woff2'
),
url(../fonts/MaterialIcons-Regular.woff)
format
(
'woff'
),
url(../fonts/MaterialIcons-Regular.woff)
format
(
'woff'
),
url(../fonts/MaterialIcons-Regular.ttf)
format
(
'truetype'
);
url(../fonts/MaterialIcons-Regular.ttf)
format
(
'truetype'
);
}
}
.material-icons
{
.material-icons
{
font-family
:
'Material Icons'
;
font-family
:
'Material Icons'
;
font-weight
:
normal
;
font-weight
:
normal
;
font-style
:
normal
;
font-style
:
normal
;
font-size
:
24px
;
font-size
:
24px
;
display
:
inline-block
;
display
:
inline-block
;
line-height
:
1
;
line-height
:
1
;
text-transform
:
none
;
text-transform
:
none
;
letter-spacing
:
normal
;
letter-spacing
:
normal
;
word-wrap
:
normal
;
word-wrap
:
normal
;
white-space
:
nowrap
;
white-space
:
nowrap
;
direction
:
ltr
;
direction
:
ltr
;
-webkit-font-smoothing
:
antialiased
;
-webkit-font-smoothing
:
antialiased
;
text-rendering
:
optimizeLegibility
;
text-rendering
:
optimizeLegibility
;
-moz-osx-font-smoothing
:
grayscale
;
-moz-osx-font-smoothing
:
grayscale
;
font-feature-settings
:
'liga'
;
font-feature-settings
:
'liga'
;
}
}
/* Framework7 Icons Font (for iOS theme) */
/* Framework7 Icons Font (for iOS theme) */
@font-face
{
@font-face
{
font-family
:
'Framework7 Icons'
;
font-family
:
'Framework7 Icons'
;
font-style
:
normal
;
font-style
:
normal
;
font-weight
:
400
;
font-weight
:
400
;
src
:
url("../fonts/Framework7Icons-Regular.eot")
;
src
:
url("../fonts/Framework7Icons-Regular.eot")
;
src
:
url("../fonts/Framework7Icons-Regular.woff2")
format
(
"woff2"
),
src
:
url("../fonts/Framework7Icons-Regular.woff2")
format
(
"woff2"
),
url("../fonts/Framework7Icons-Regular.woff")
format
(
"woff"
),
url("../fonts/Framework7Icons-Regular.woff")
format
(
"woff"
),
url("../fonts/Framework7Icons-Regular.ttf")
format
(
"truetype"
);
url("../fonts/Framework7Icons-Regular.ttf")
format
(
"truetype"
);
}
}
.f7-icons
{
.f7-icons
{
font-family
:
'Framework7 Icons'
;
font-family
:
'Framework7 Icons'
;
font-weight
:
normal
;
font-weight
:
normal
;
font-style
:
normal
;
font-style
:
normal
;
font-size
:
28px
;
font-size
:
28px
;
line-height
:
1
;
line-height
:
1
;
letter-spacing
:
normal
;
letter-spacing
:
normal
;
text-transform
:
none
;
text-transform
:
none
;
display
:
inline-block
;
display
:
inline-block
;
white-space
:
nowrap
;
white-space
:
nowrap
;
word-wrap
:
normal
;
word-wrap
:
normal
;
direction
:
ltr
;
direction
:
ltr
;
-webkit-font-smoothing
:
antialiased
;
-webkit-font-smoothing
:
antialiased
;
text-rendering
:
optimizeLegibility
;
text-rendering
:
optimizeLegibility
;
-moz-osx-font-smoothing
:
grayscale
;
-moz-osx-font-smoothing
:
grayscale
;
-webkit-font-feature-settings
:
"liga"
;
-webkit-font-feature-settings
:
"liga"
;
-moz-font-feature-settings
:
"liga=1"
;
-moz-font-feature-settings
:
"liga=1"
;
-moz-font-feature-settings
:
"liga"
;
-moz-font-feature-settings
:
"liga"
;
font-feature-settings
:
"liga"
;
font-feature-settings
:
"liga"
;
text-align
:
center
;
text-align
:
center
;
}
}
src/i18n/de.js
View file @
316bc7b2
...
@@ -9,4 +9,4 @@ export default {
...
@@ -9,4 +9,4 @@ export default {
],
],
},
},
},
},
}
}
;
src/i18n/en.js
View file @
316bc7b2
...
@@ -343,7 +343,7 @@ export default {
...
@@ -343,7 +343,7 @@ export default {
},
},
done
:
{
done
:
{
description
:
'
@:app.name is ready! You can now launch @:app.name and start downloading apps.
'
,
description
:
'
@:app.name is ready! You can now launch @:app.name and start downloading apps.
'
,
}
}
,
},
},
},
},
},
},
...
...
src/index.html
View file @
316bc7b2
...
@@ -3,43 +3,45 @@
...
@@ -3,43 +3,45 @@
<head>
<head>
<meta
charset=
"utf-8"
>
<meta
charset=
"utf-8"
>
<
%
if
(process.env.NODE_ENV =
==
'
production
')
{
%
>
<
%
if
(process.env.NODE_ENV =
==
'
production
')
{
%
>
<meta
http-equiv=
"Content-Security-Policy"
content=
"default-src 'self' 'unsafe-inline' 'unsafe-eval' data: gap: content: https://api.store.ablota.com"
>
<meta
content=
"default-src 'self' 'unsafe-inline' 'unsafe-eval' data: gap: content: https://api.store.ablota.com"
http-equiv=
"Content-Security-Policy"
>
<
%
}
%
>
<
%
}
%
>
<meta
http-equiv=
"x-ua-compatible"
content=
"ie=edge"
>
<meta
content=
"ie=edge"
http-equiv=
"x-ua-compatible"
>
<meta
property=
"og:image:width"
content=
"128"
>
<meta
content=
"128"
property=
"og:image:width"
>
<meta
property=
"og:image:height"
content=
"128"
>
<meta
content=
"128"
property=
"og:image:height"
>
<meta
property=
"og:description"
content=
"The universal, decentralized and open source app store."
>
<meta
content=
"The universal, decentralized and open source app store."
property=
"og:description"
>
<meta
property=
"og:title"
content=
"Ablota Store"
>
<meta
content=
"Ablota Store"
property=
"og:title"
>
<meta
property=
"og:url"
content=
"https://store.ablota.com"
>
<meta
content=
"https://store.ablota.com"
property=
"og:url"
>
<meta
property=
"og:image"
content=
"https://store.ablota.com/static/icons/favicon.png"
>
<meta
content=
"https://store.ablota.com/static/icons/favicon.png"
property=
"og:image"
>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no, minimal-ui, viewport-fit=cover"
>
<meta
content=
"width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no, minimal-ui, viewport-fit=cover"
name=
"viewport"
>
<meta
name=
"robots"
content=
"noarchive, notranslate, noimageindex"
>
<meta
content=
"noarchive, notranslate, noimageindex"
name=
"robots"
>
<meta
name=
"theme-color"
content=
"#007aff"
>
<meta
content=
"#007aff"
name=
"theme-color"
>
<meta
name=
"format-detection"
content=
"telephone=no"
>
<meta
content=
"telephone=no"
name=
"format-detection"
>
<meta
name=
"format-detection"
content=
"date=no"
>
<meta
content=
"date=no"
name=
"format-detection"
>
<meta
name=
"format-detection"
content=
"address=no"
>
<meta
content=
"address=no"
name=
"format-detection"
>
<meta
name=
"msapplication-TileColor"
content=
"#007aff"
>
<meta
content=
"#007aff"
name=
"msapplication-TileColor"
>
<meta
name=
"msapplication-tap-highlight"
content=
"no"
>
<meta
content=
"no"
name=
"msapplication-tap-highlight"
>
<meta
name=
"author"
content=
"Ablota (StarApps GmbH)"
>
<meta
content=
"Ablota (StarApps GmbH)"
name=
"author"
>
<meta
name=
"description"
content=
"The universal, decentralized and open source app store."
>
<meta
content=
"The universal, decentralized and open source app store."
name=
"description"
>
<meta
name=
"keywords"
content=
"ablota store, ablota, store, app, apps, game, game, app store, universal, open source, decentralized, foss, floss, android, ios, web, electron, desktop, starapps, starapps ltd, starapps gmbh"
>
<meta
content=
"ablota store, ablota, store, app, apps, game, game, app store, universal, open source, decentralized, foss, floss, android, ios, web, electron, desktop, starapps, starapps ltd, starapps gmbh"
name=
"keywords"
>
<title>
Ablota Store
</title>
<title>
Ablota Store
</title>
<
%
if
(process.env.TARGET =
==
'
web
')
{
%
>
<
%
if
(process.env.TARGET =
==
'
web
')
{
%
>
<meta
name=
"apple-mobile-web-app-capable"
content=
"yes"
>
<meta
content=
"yes"
name=
"apple-mobile-web-app-capable"
>
<meta
name=
"apple-mobile-web-app-status-bar-style"
content=
"black-translucent"
>
<meta
content=
"black-translucent"
name=
"apple-mobile-web-app-status-bar-style"
>
<
%
for
(
var
index
in
htmlWebpackPlugin.files.css
)
{
%
>
<
%
for
(
var
index
in
htmlWebpackPlugin.files.css
)
{
%
>
<link
rel=
"preload"
href=
"<%= htmlWebpackPlugin.files.css[index] %>"
as=
"style"
>
<link
as=
"style"
href=
"<%= htmlWebpackPlugin.files.css[index] %>"
rel=
"preload"
>
<
%
}
%
>
<
%
}
%
>
<
%
for
(
var
index
in
htmlWebpackPlugin.files.js
)
{
%
>
<
%
for
(
var
index
in
htmlWebpackPlugin.files.js
)
{
%
>
<link
as=
"script"
href=
"<%= htmlWebpackPlugin.files.js[index] %>"
rel=
"preload"
>
<link
rel=
"preload"
href=
"<%= htmlWebpackPlugin.files.js[index] %>"
as=
"script"
>
<
%
}
%
>
<
%
}
%
>
<link
rel=
"apple-touch-icon"
sizes=
"256x256"
href=
"/static/icons/apple-touch-icon.png"
>
<link
href=
"/static/icons/apple-touch-icon.png"
rel=
"apple-touch-icon"
sizes=
"256x256"
>
<link
re
l
=
"
icon"
type=
"image/png"
sizes=
"128x128"
href=
"/static/icons/favicon.
png"
>
<link
h
re
f
=
"
/static/icons/favicon.png"
rel=
"icon"
sizes=
"128x128"
type=
"image/
png"
>
<link
rel=
"manifest"
href=
"/manifest.json"
>
<link
href=
"/manifest.json"
rel=
"manifest"
>
<
%
}
%
>
<
%
}
%
>
</head>
</head>
<body>
<body>
...
...
src/js/utils.js
View file @
316bc7b2
import
{
Request
,
Device
}
from
'
framework7
'
;
import
{
Device
,
Request
}
from
'
framework7
'
;
import
sanitizeHtml
from
'
sanitize-html
'
;
import
sanitizeHtml
from
'
sanitize-html
'
;
import
sourceValidator
from
'
../validators/source
'
;
import
sourceValidator
from
'
../validators/source
'
;
...
@@ -38,7 +38,13 @@ export function fetchSource(url, server, age = 6) {
...
@@ -38,7 +38,13 @@ export function fetchSource(url, server, age = 6) {
}
}
});
});
[
'
phoneScreenshots
'
,
'
sevenInchScreenshots
'
,
'
tenInchScreenshots
'
,
'
tvScreenshots
'
,
'
wearScreenshots
'
].
forEach
(
assets
=>
app
.
localized
[
key
][
assets
].
forEach
((
asset
,
index
)
=>
{
[
'
phoneScreenshots
'
,
'
sevenInchScreenshots
'
,
'
tenInchScreenshots
'
,
'
tvScreenshots
'
,
'
wearScreenshots
'
,
].
forEach
(
assets
=>
app
.
localized
[
key
][
assets
].
forEach
((
asset
,
index
)
=>
{
app
.
localized
[
key
][
assets
][
index
]
=
`
${
url
}${
app
.
packageName
}
/
${
key
}
/
${
assets
}
/
${
asset
}
`
;
app
.
localized
[
key
][
assets
][
index
]
=
`
${
url
}${
app
.
packageName
}
/
${
key
}
/
${
assets
}
/
${
asset
}
`
;
}));
}));
});
});
...
@@ -60,8 +66,8 @@ export function fetchSource(url, server, age = 6) {
...
@@ -60,8 +66,8 @@ export function fetchSource(url, server, age = 6) {
};
};
if
(
Device
.
cordova
)
{
if
(
Device
.
cordova
)
{
window
.
resolveLocalFileSystemURL
(
cordova
.
file
.
dataDirectory
,
dataDirectory
=>
{
window
.
resolveLocalFileSystemURL
(
cordova
.
file
.
dataDirectory
,
dataDirectory
=>
{
dataDirectory
.
getDirectory
(
'
sources
'
,
{
create
:
true
,
exclusive
:
false
},
dataSourcesDirectory
=>
{
dataDirectory
.
getDirectory
(
'
sources
'
,
{
create
:
true
,
exclusive
:
false
},
dataSourcesDirectory
=>
{
ablota
.
store
.
file
.
hashName
(
url
,
data
=>
{
ablota
.
store
.
file
.
hashName
(
url
,
data
=>
{
const
fetchIndex
=
()
=>
{
const
fetchIndex
=
()
=>
{
ablota
.
store
.
file
.
download
(
`
${
url
}
index-v1.jar`
,
`
${
cordova
.
file
.
dataDirectory
}
sources/
${
data
.
hash
}
.jar`
,
{},
{},
data
=>
{
ablota
.
store
.
file
.
download
(
`
${
url
}
index-v1.jar`
,
`
${
cordova
.
file
.
dataDirectory
}
sources/
${
data
.
hash
}
.jar`
,
{},
{},
data
=>
{
...
@@ -79,7 +85,7 @@ export function fetchSource(url, server, age = 6) {
...
@@ -79,7 +85,7 @@ export function fetchSource(url, server, age = 6) {
},
()
=>
reject
(
'
request
'
));
},
()
=>
reject
(
'
request
'
));
};
};
dataSourcesDirectory
.
getFile
(
`
${
data
.
hash
}
.jar`
,
{
create
:
false
},
sourceFile
=>
{
dataSourcesDirectory
.
getFile
(
`
${
data
.
hash
}
.jar`
,
{
create
:
false
},
sourceFile
=>
{
sourceFile
.
file
(
file
=>
{
sourceFile
.
file
(
file
=>
{
if
(
file
.
lastModified
<
new
Date
().
getTime
()
-
age
*
60
*
60
*
1000
)
{
if
(
file
.
lastModified
<
new
Date
().
getTime
()
-
age
*
60
*
60
*
1000
)
{
fetchIndex
();
fetchIndex
();
...
@@ -130,8 +136,8 @@ export function fetchAsset(url, server, age = 24) {
...
@@ -130,8 +136,8 @@ export function fetchAsset(url, server, age = 24) {
};
};
window
.
resolveLocalFileSystemURL
(
cordova
.
file
.
cacheDirectory
,
cacheDirectory
=>
{
window
.
resolveLocalFileSystemURL
(
cordova
.
file
.
cacheDirectory
,
cacheDirectory
=>
{
cacheDirectory
.
getDirectory
(
'
assets
'
,
{
create
:
true
,
exclusive
:
false
},
cacheAssetsDirectory
=>
{
cacheDirectory
.
getDirectory
(
'
assets
'
,
{
create
:
true
,
exclusive
:
false
},
cacheAssetsDirectory
=>
{
cacheAssetsDirectory
.
getFile
(
data
.
hash
,
{
create
:
false
},
assetFile
=>
{
cacheAssetsDirectory
.
getFile
(
data
.
hash
,
{
create
:
false
},
assetFile
=>
{
assetFile
.
file
(
file
=>
{
assetFile
.
file
(
file
=>
{
if
(
file
.
lastModified
<
new
Date
().
getTime
()
-
age
*
60
*
60
*
1000
)
{
if
(
file
.
lastModified
<
new
Date
().
getTime
()
-
age
*
60
*
60
*
1000
)
{
downloadAsset
();
downloadAsset
();
...
@@ -154,7 +160,7 @@ export function fetchAsset(url, server, age = 24) {
...
@@ -154,7 +160,7 @@ export function fetchAsset(url, server, age = 24) {
}
else
{
}
else
{
resolve
({
resolve
({
originalUrl
:
url
,
originalUrl
:
url
,
localUrl
:
`
${
server
.
url
}
v1/proxy/asset?url=
${
url
}
`
localUrl
:
`
${
server
.
url
}
v1/proxy/asset?url=
${
url
}
`
,
});
});
}
}
});
});
...
@@ -323,7 +329,7 @@ export function downloadPackage(app, appPackage, updateCallback) {
...
@@ -323,7 +329,7 @@ export function downloadPackage(app, appPackage, updateCallback) {
};
};
window
.
resolveLocalFileSystemURL
(
cordova
.
file
.
cacheDirectory
,
cacheDirectory
=>
{
window
.
resolveLocalFileSystemURL
(
cordova
.
file
.
cacheDirectory
,
cacheDirectory
=>
{
cacheDirectory
.
getDirectory
(
'
packages
'
,
{
create
:
true
,
exclusive
:
false
},
packagesDirectory
=>
{
cacheDirectory
.
getDirectory
(
'
packages
'
,
{
create
:
true
,
exclusive
:
false
},
packagesDirectory
=>
{
ablota
.
store
.
file
.
download
(
appPackage
.
apkName
,
packageFilePath
,
{},
{},
data
=>
{
ablota
.
store
.
file
.
download
(
appPackage
.
apkName
,
packageFilePath
,
{},
{},
data
=>
{
if
(
data
.
status
===
'
success
'
)
{
if
(
data
.
status
===
'
success
'
)
{
ablota
.
store
.
file
.
hash
(
packageFilePath
,
data
=>
{
ablota
.
store
.
file
.
hash
(
packageFilePath
,
data
=>
{
...
@@ -331,7 +337,7 @@ export function downloadPackage(app, appPackage, updateCallback) {
...
@@ -331,7 +337,7 @@ export function downloadPackage(app, appPackage, updateCallback) {
if
(
data
.
hash
.
toLowerCase
()
===
appPackage
.
hash
)
{
if
(
data
.
hash
.
toLowerCase
()
===
appPackage
.
hash
)
{
finish
(
'
package
'
);
finish
(
'
package
'
);
}
else
{
}
else
{
packagesDirectory
.
getFile
(
packageFilePath
,
{
create
:
false
},
packageFileEntry
=>
{
packagesDirectory
.
getFile
(
packageFilePath
,
{
create
:
false
},
packageFileEntry
=>
{
packageFileEntry
.
remove
();
packageFileEntry
.
remove
();
});
});
...
@@ -360,9 +366,9 @@ export function downloadPackage(app, appPackage, updateCallback) {
...
@@ -360,9 +366,9 @@ export function downloadPackage(app, appPackage, updateCallback) {
if
(
appPackage
[
obbFile
]
&&
appPackage
[
`
${
obbFile
}
Sha256`
])
{
if
(
appPackage
[
obbFile
]
&&
appPackage
[
`
${
obbFile
}
Sha256`
])
{
window
.
resolveLocalFileSystemURL
(
cordova
.
file
.
externalRootDirectory
,
externalRootDirectory
=>
{
window
.
resolveLocalFileSystemURL
(
cordova
.
file
.
externalRootDirectory
,
externalRootDirectory
=>
{
externalRootDirectory
.
getDirectory
(
'
Android
'
,
{
create
:
true
,
exclusive
:
false
},
androidDirectory
=>
{
externalRootDirectory
.
getDirectory
(
'
Android
'
,
{
create
:
true
,
exclusive
:
false
},
androidDirectory
=>
{
androidDirectory
.
getDirectory
(
'
obb
'
,
{
create
:
true
,
exclusive
:
false
},
obbDirectory
=>
{
androidDirectory
.
getDirectory
(
'
obb
'
,
{
create
:
true
,
exclusive
:
false
},
obbDirectory
=>
{
obbDirectory
.
getDirectory
(
appPackage
.
packageName
,
{
create
:
true
,
exclusive
:
false
},
appPackageDirectory
=>
{
obbDirectory
.
getDirectory
(
appPackage
.
packageName
,
{
create
:
true
,
exclusive
:
false
},
appPackageDirectory
=>
{
const
obbFilename
=
appPackage
[
obbFile
].
substring
(
appPackage
[
obbFile
].
lastIndexOf
(
'
/
'
)
+
1
);
const
obbFilename
=
appPackage
[
obbFile
].
substring
(
appPackage
[
obbFile
].
lastIndexOf
(
'
/
'
)
+
1
);
const
obbFilePath
=
`
${
cordova
.
file
.
externalCacheDirectory
}
/
${
obbFilename
}
`
;
const
obbFilePath
=
`
${
cordova
.
file
.
externalCacheDirectory
}
/
${
obbFilename
}
`
;
const
downloadObbFile
=
()
=>
{
const
downloadObbFile
=
()
=>
{
...
@@ -374,14 +380,14 @@ export function downloadPackage(app, appPackage, updateCallback) {
...
@@ -374,14 +380,14 @@ export function downloadPackage(app, appPackage, updateCallback) {
if
(
data
.
status
===
'
success
'
)
{
if
(
data
.
status
===
'
success
'
)
{
if
(
data
.
hash
.
toLowerCase
()
===
appPackage
[
`
${
obbFile
}
Sha256`
])
{
if
(
data
.
hash
.
toLowerCase
()
===
appPackage
[
`
${
obbFile
}
Sha256`
])
{
window
.
resolveLocalFileSystemURL
(
cordova
.
file
.
externalCacheDirectory
,
externalCacheDirectory
=>
{
window
.
resolveLocalFileSystemURL
(
cordova
.
file
.
externalCacheDirectory
,
externalCacheDirectory
=>
{
externalCacheDirectory
.
getFile
(
obbFilename
,
{
create
:
false
},
obbFileEntry
=>
{
externalCacheDirectory
.
getFile
(
obbFilename
,
{
create
:
false
},
obbFileEntry
=>
{
obbFileEntry
.
moveTo
(
appPackageDirectory
,
obbFilename
,
()
=>
{
obbFileEntry
.
moveTo
(
appPackageDirectory
,
obbFilename
,
()
=>
{
finish
(
obbName
);
finish
(
obbName
);
},
()
=>
reject
(
'
utils.downloadPackage.directory
'
));
},
()
=>
reject
(
'
utils.downloadPackage.directory
'
));
},
()
=>
reject
(
'
utils.downloadPackage.directory
'
));
},
()
=>
reject
(
'