0.2.2
This commit is contained in:
@@ -35,9 +35,3 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
name: app-release
|
name: app-release
|
||||||
path: app/build/outputs/apk/release/app-release.apk
|
path: app/build/outputs/apk/release/app-release.apk
|
||||||
|
|
||||||
- name: Upload APK
|
|
||||||
uses: actions/upload-artifact@v4
|
|
||||||
with:
|
|
||||||
name: app-release
|
|
||||||
path: app/build/outputs/apk/release/app-release.apk
|
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Generated
+60
-4
@@ -5,12 +5,68 @@
|
|||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="51538617-7e5b-4e71-9f47-7bda274cf4cc" name="Changes" comment="">
|
<list default="true" id="51538617-7e5b-4e71-9f47-7bda274cf4cc" name="Changes" comment="">
|
||||||
<change beforePath="$PROJECT_DIR$/.gradle/8.5/checksums/checksums.lock" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/8.5/checksums/checksums.lock" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.gitea/workflows/build-apk.yml" beforeDir="false" afterPath="$PROJECT_DIR$/.gitea/workflows/build-apk.yml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/.gradle/8.5/dependencies-accessors/dependencies-accessors.lock" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/8.5/dependencies-accessors/dependencies-accessors.lock" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.gradle/8.5/executionHistory/executionHistory.bin" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/8.5/executionHistory/executionHistory.bin" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/.gradle/8.5/executionHistory/executionHistory.lock" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/8.5/executionHistory/executionHistory.lock" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/.gradle/8.5/fileHashes/fileHashes.bin" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/8.5/fileHashes/fileHashes.bin" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/.gradle/8.5/fileHashes/fileHashes.lock" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/8.5/fileHashes/fileHashes.lock" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.gradle/8.5/fileHashes/fileHashes.lock" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/8.5/fileHashes/fileHashes.lock" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/.gradle/8.5/fileHashes/resourceHashesCache.bin" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/8.5/fileHashes/resourceHashesCache.bin" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/.gradle/buildOutputCleanup/buildOutputCleanup.lock" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/buildOutputCleanup/buildOutputCleanup.lock" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.gradle/buildOutputCleanup/buildOutputCleanup.lock" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/buildOutputCleanup/buildOutputCleanup.lock" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/MainActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/MainActivity.kt" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.gradle/file-system.probe" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/file-system.probe" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/app/build.gradle" beforeDir="false" afterPath="$PROJECT_DIR$/app/build.gradle" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/app/build/intermediates/assets/debug/js/components.js" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/intermediates/assets/debug/js/components.js" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/intermediates/assets/debug/js/dzielenie.js" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/intermediates/assets/debug/js/dzielenie.js" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/intermediates/assets/debug/js/mnozenie.js" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/intermediates/assets/debug/js/mnozenie.js" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/intermediates/compressed_assets/debug/out/assets/js/components.js.jar" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/intermediates/compressed_assets/debug/out/assets/js/components.js.jar" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/intermediates/compressed_assets/debug/out/assets/js/dzielenie.js.jar" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/intermediates/compressed_assets/debug/out/assets/js/dzielenie.js.jar" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/intermediates/compressed_assets/debug/out/assets/js/mnozenie.js.jar" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/intermediates/compressed_assets/debug/out/assets/js/mnozenie.js.jar" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_3/graph.bin" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/intermediates/desugar_graph/debug/out/currentProject/dirs_bucket_3/graph.bin" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/intermediates/dex/debug/mergeProjectDexDebug/6/classes.dex" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/intermediates/dex/debug/mergeProjectDexDebug/6/classes.dex" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/intermediates/incremental/packageDebug/tmp/debug/dex-renamer-state.txt" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/intermediates/project_dex_archive/debug/out/com/example/app/MainActivity.dex" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/intermediates/project_dex_archive/debug/out/com/example/app/MainActivity.dex" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/last-build.bin" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/cacheable/last-build.bin" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/local-state/build-history.bin" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/kotlin/compileDebugKotlin/local-state/build-history.bin" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/outputs/apk/debug/app-debug.apk" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/outputs/apk/debug/app-debug.apk" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/build/tmp/kotlin-classes/debug/com/example/app/MainActivity.class" beforeDir="false" afterPath="$PROJECT_DIR$/app/build/tmp/kotlin-classes/debug/com/example/app/MainActivity.class" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/src/main/assets/js/components.js" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/assets/js/components.js" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/src/main/assets/js/dzielenie.js" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/assets/js/dzielenie.js" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/src/main/assets/js/mnozenie.js" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/assets/js/mnozenie.js" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/app/src/main/java/com/example/app/MainActivity.kt" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/com/example/app/MainActivity.kt" afterDir="false" />
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
|
|||||||
@@ -1,7 +1,20 @@
|
|||||||
// Komponenty HTML loader
|
// Komponenty HTML loader
|
||||||
function loadComponent(path, replaceMap = {}) {
|
function loadComponent(path, replaceMap = {}) {
|
||||||
|
// If path is a full mapped origin used by WebViewAssetLoader, strip it to a relative path.
|
||||||
|
const mappedOrigin = 'https://appassets.androidplatform.net/assets/';
|
||||||
|
if (path.startsWith(mappedOrigin)) {
|
||||||
|
path = path.slice(mappedOrigin.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
// If an absolute path starting with '/' is provided, remove leading slash to make it
|
||||||
|
// relative to the current document (works under local http server and WebViewAssetLoader).
|
||||||
|
if (path.startsWith('/')) path = path.slice(1);
|
||||||
|
|
||||||
return fetch(path)
|
return fetch(path)
|
||||||
.then(r => r.text())
|
.then(r => {
|
||||||
|
if (!r.ok) throw new Error('Failed to load component: ' + path);
|
||||||
|
return r.text();
|
||||||
|
})
|
||||||
.then(html => {
|
.then(html => {
|
||||||
Object.entries(replaceMap).forEach(([key, val]) => {
|
Object.entries(replaceMap).forEach(([key, val]) => {
|
||||||
html = html.replaceAll(key, val);
|
html = html.replaceAll(key, val);
|
||||||
|
|||||||
@@ -83,9 +83,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ── Back to list ──────────────────────────────────────────────────────────
|
// ── Back to list ──────────────────────────────────────────────────────────
|
||||||
|
// Zakończ button: natychmiast wróć do listy bez potwierdzenia
|
||||||
readBackBtn.addEventListener('click', () => {
|
readBackBtn.addEventListener('click', () => {
|
||||||
const active = yOffset > 0 || autoTimer !== null
|
|
||||||
if (active && !confirm('Wrócić do listy tekstów?')) return
|
|
||||||
clearInterval(autoTimer)
|
clearInterval(autoTimer)
|
||||||
autoTimer = null
|
autoTimer = null
|
||||||
readWrap.classList.add('hidden')
|
readWrap.classList.add('hidden')
|
||||||
|
|||||||
@@ -296,9 +296,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ── Navigation ────────────────────────────────────────────────────────────
|
// ── Navigation ────────────────────────────────────────────────────────────
|
||||||
|
// Zakończ button: natychmiast wracamy do listy bez potwierdzenia
|
||||||
playBackBtn.addEventListener('click', () => {
|
playBackBtn.addEventListener('click', () => {
|
||||||
const inProgress = blanks.length > 0 && current < blanks.length
|
|
||||||
if (inProgress && !confirm('Przerwać dyktando i wrócić do listy?')) return
|
|
||||||
goToList()
|
goToList()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -136,7 +136,8 @@
|
|||||||
let sha = (window.COMMIT_SHA || '').toString().trim()
|
let sha = (window.COMMIT_SHA || '').toString().trim()
|
||||||
if (!sha) {
|
if (!sha) {
|
||||||
try {
|
try {
|
||||||
const res = await fetch('/version.sha', { cache: 'no-cache' })
|
// use relative path so the request works under WebViewAssetLoader or a local server
|
||||||
|
const res = await fetch('version.sha', { cache: 'no-cache' })
|
||||||
if (res.ok) {
|
if (res.ok) {
|
||||||
const txt = await res.text()
|
const txt = await res.text()
|
||||||
const first = txt.split(/\r?\n/).find(l => l.trim().length > 0)
|
const first = txt.split(/\r?\n/).find(l => l.trim().length > 0)
|
||||||
|
|||||||
@@ -136,7 +136,8 @@
|
|||||||
let sha = (window.COMMIT_SHA || '').toString().trim()
|
let sha = (window.COMMIT_SHA || '').toString().trim()
|
||||||
if (!sha) {
|
if (!sha) {
|
||||||
try {
|
try {
|
||||||
const res = await fetch('/version.sha', { cache: 'no-cache' })
|
// use relative path so the request works under WebViewAssetLoader or a local server
|
||||||
|
const res = await fetch('version.sha', { cache: 'no-cache' })
|
||||||
if (res.ok) {
|
if (res.ok) {
|
||||||
const txt = await res.text()
|
const txt = await res.text()
|
||||||
const first = txt.split(/\r?\n/).find(l => l.trim().length > 0)
|
const first = txt.split(/\r?\n/).find(l => l.trim().length > 0)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
@@ -1,4 +1,4 @@
|
|||||||
#Wed May 27 14:04:13 CEST 2026
|
#Wed May 27 14:20:16 CEST 2026
|
||||||
base.2=/Users/aln/Work/Matma/app/build/intermediates/dex/debug/mergeProjectDexDebug/6/classes.dex
|
base.2=/Users/aln/Work/Matma/app/build/intermediates/dex/debug/mergeProjectDexDebug/6/classes.dex
|
||||||
path.2=6/classes.dex
|
path.2=6/classes.dex
|
||||||
base.1=/Users/aln/Work/Matma/app/build/intermediates/dex/debug/mergeProjectDexDebug/0/classes.dex
|
base.1=/Users/aln/Work/Matma/app/build/intermediates/dex/debug/mergeProjectDexDebug/0/classes.dex
|
||||||
|
|||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
@@ -1,2 +1,2 @@
|
|||||||
3
|
4
|
||||||
0
|
0
|
||||||
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
BIN
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,7 +1,20 @@
|
|||||||
// Komponenty HTML loader
|
// Komponenty HTML loader
|
||||||
function loadComponent(path, replaceMap = {}) {
|
function loadComponent(path, replaceMap = {}) {
|
||||||
|
// If path is a full mapped origin used by WebViewAssetLoader, strip it to a relative path.
|
||||||
|
const mappedOrigin = 'https://appassets.androidplatform.net/assets/';
|
||||||
|
if (path.startsWith(mappedOrigin)) {
|
||||||
|
path = path.slice(mappedOrigin.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
// If an absolute path starting with '/' is provided, remove leading slash to make it
|
||||||
|
// relative to the current document (works under local http server and WebViewAssetLoader).
|
||||||
|
if (path.startsWith('/')) path = path.slice(1);
|
||||||
|
|
||||||
return fetch(path)
|
return fetch(path)
|
||||||
.then(r => r.text())
|
.then(r => {
|
||||||
|
if (!r.ok) throw new Error('Failed to load component: ' + path);
|
||||||
|
return r.text();
|
||||||
|
})
|
||||||
.then(html => {
|
.then(html => {
|
||||||
Object.entries(replaceMap).forEach(([key, val]) => {
|
Object.entries(replaceMap).forEach(([key, val]) => {
|
||||||
html = html.replaceAll(key, val);
|
html = html.replaceAll(key, val);
|
||||||
|
|||||||
@@ -83,9 +83,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ── Back to list ──────────────────────────────────────────────────────────
|
// ── Back to list ──────────────────────────────────────────────────────────
|
||||||
|
// Zakończ button: natychmiast wróć do listy bez potwierdzenia
|
||||||
readBackBtn.addEventListener('click', () => {
|
readBackBtn.addEventListener('click', () => {
|
||||||
const active = yOffset > 0 || autoTimer !== null
|
|
||||||
if (active && !confirm('Wrócić do listy tekstów?')) return
|
|
||||||
clearInterval(autoTimer)
|
clearInterval(autoTimer)
|
||||||
autoTimer = null
|
autoTimer = null
|
||||||
readWrap.classList.add('hidden')
|
readWrap.classList.add('hidden')
|
||||||
|
|||||||
@@ -296,9 +296,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ── Navigation ────────────────────────────────────────────────────────────
|
// ── Navigation ────────────────────────────────────────────────────────────
|
||||||
|
// Zakończ button: natychmiast wracamy do listy bez potwierdzenia
|
||||||
playBackBtn.addEventListener('click', () => {
|
playBackBtn.addEventListener('click', () => {
|
||||||
const inProgress = blanks.length > 0 && current < blanks.length
|
|
||||||
if (inProgress && !confirm('Przerwać dyktando i wrócić do listy?')) return
|
|
||||||
goToList()
|
goToList()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -136,7 +136,8 @@
|
|||||||
let sha = (window.COMMIT_SHA || '').toString().trim()
|
let sha = (window.COMMIT_SHA || '').toString().trim()
|
||||||
if (!sha) {
|
if (!sha) {
|
||||||
try {
|
try {
|
||||||
const res = await fetch('/version.sha', { cache: 'no-cache' })
|
// use relative path so the request works under WebViewAssetLoader or a local server
|
||||||
|
const res = await fetch('version.sha', { cache: 'no-cache' })
|
||||||
if (res.ok) {
|
if (res.ok) {
|
||||||
const txt = await res.text()
|
const txt = await res.text()
|
||||||
const first = txt.split(/\r?\n/).find(l => l.trim().length > 0)
|
const first = txt.split(/\r?\n/).find(l => l.trim().length > 0)
|
||||||
|
|||||||
@@ -136,7 +136,8 @@
|
|||||||
let sha = (window.COMMIT_SHA || '').toString().trim()
|
let sha = (window.COMMIT_SHA || '').toString().trim()
|
||||||
if (!sha) {
|
if (!sha) {
|
||||||
try {
|
try {
|
||||||
const res = await fetch('/version.sha', { cache: 'no-cache' })
|
// use relative path so the request works under WebViewAssetLoader or a local server
|
||||||
|
const res = await fetch('version.sha', { cache: 'no-cache' })
|
||||||
if (res.ok) {
|
if (res.ok) {
|
||||||
const txt = await res.text()
|
const txt = await res.text()
|
||||||
const first = txt.split(/\r?\n/).find(l => l.trim().length > 0)
|
const first = txt.split(/\r?\n/).find(l => l.trim().length > 0)
|
||||||
|
|||||||
@@ -4,14 +4,10 @@
|
|||||||
const backBtn = document.getElementById('back-to-hub')
|
const backBtn = document.getElementById('back-to-hub')
|
||||||
if (!backBtn) return
|
if (!backBtn) return
|
||||||
|
|
||||||
|
// Immediately navigate back to hub/menu without confirmation
|
||||||
backBtn.addEventListener('click', (e) => {
|
backBtn.addEventListener('click', (e) => {
|
||||||
const playScreen = document.getElementById('play-screen')
|
const href = backBtn.getAttribute('href')
|
||||||
const taskActive = playScreen && !playScreen.classList.contains('hidden')
|
if (href) window.location.href = href
|
||||||
if (taskActive) {
|
|
||||||
e.preventDefault()
|
|
||||||
const ok = confirm('Masz aktywne zadanie. Czy na pewno chcesz wyjść do menu?')
|
|
||||||
if (ok) window.location.href = backBtn.getAttribute('href')
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})()
|
})()
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
package com.example.app
|
package com.example.app
|
||||||
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import android.webkit.WebResourceRequest
|
||||||
|
import android.webkit.WebResourceResponse
|
||||||
import android.webkit.WebView
|
import android.webkit.WebView
|
||||||
import android.webkit.WebViewClient
|
import android.webkit.WebViewClient
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
|
import androidx.webkit.WebViewAssetLoader
|
||||||
|
|
||||||
class MainActivity : AppCompatActivity() {
|
class MainActivity : AppCompatActivity() {
|
||||||
|
|
||||||
@@ -11,16 +14,27 @@ class MainActivity : AppCompatActivity() {
|
|||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
val webView = WebView(this)
|
val webView = WebView(this)
|
||||||
|
|
||||||
// Enable remote debugging for WebView so we can inspect JS console via chrome://inspect
|
// Enable remote debugging for WebView so we can inspect JS console via chrome://inspect
|
||||||
WebView.setWebContentsDebuggingEnabled(true)
|
WebView.setWebContentsDebuggingEnabled(true)
|
||||||
|
|
||||||
webView.settings.javaScriptEnabled = true
|
webView.settings.javaScriptEnabled = true
|
||||||
webView.settings.allowFileAccess = true
|
|
||||||
webView.settings.domStorageEnabled = true
|
webView.settings.domStorageEnabled = true
|
||||||
|
|
||||||
webView.webViewClient = WebViewClient()
|
// Use WebViewAssetLoader to serve files from /assets/ over a secure origin.
|
||||||
|
val assetLoader = WebViewAssetLoader.Builder()
|
||||||
|
.addPathHandler("/assets/", WebViewAssetLoader.AssetsPathHandler(this))
|
||||||
|
.build()
|
||||||
|
|
||||||
webView.loadUrl("file:///android_asset/index.html")
|
webView.webViewClient = object : WebViewClient() {
|
||||||
|
override fun shouldInterceptRequest(view: WebView?, request: WebResourceRequest?): WebResourceResponse? {
|
||||||
|
if (request == null) return null
|
||||||
|
return assetLoader.shouldInterceptRequest(request.url)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Load the app via the mapped secure origin so fetch() requests are allowed
|
||||||
|
webView.loadUrl("https://appassets.androidplatform.net/assets/index.html")
|
||||||
|
|
||||||
setContentView(webView)
|
setContentView(webView)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user