forked from MapComplete/MapComplete
Android: login window now only opens when login is actually pressed
This commit is contained in:
parent
da6f95863c
commit
f4c0541bb1
3 changed files with 21 additions and 6 deletions
2
android
2
android
|
|
@ -1 +1 @@
|
||||||
Subproject commit 1d442585b5202fcb4424d41fa2597cc23f0a9b65
|
Subproject commit 24a5122a96e9bdaa72c889b081832794fcee9e38
|
||||||
|
|
@ -80,6 +80,13 @@ npx capacitor-assets generate
|
||||||
npx cap sync
|
npx cap sync
|
||||||
npm run clean
|
npm run clean
|
||||||
|
|
||||||
|
# Monkey patch version numbers to make everything work
|
||||||
|
cd android
|
||||||
|
sed "s/\.\.\/node_modules//" -i capacitor.settings.gradle
|
||||||
|
cd capacitor
|
||||||
|
sed "s/'com.android.tools.build:gradle:8.2.1'/'com.android.tools.build:gradle:8.10'/" -i build.gradle
|
||||||
|
|
||||||
|
|
||||||
tput bel
|
tput bel
|
||||||
tput bel # Note: tput doesn't work in the runners and may not be the last command, otherwise, it'll fail.
|
tput bel # Note: tput doesn't work in the runners and may not be the last command, otherwise, it'll fail.
|
||||||
echo "All done! Don't forget to click 'gradle sync files' in Android Studio"
|
echo "All done! Don't forget to click 'gradle sync files' in Android Studio"
|
||||||
|
|
|
||||||
|
|
@ -286,8 +286,9 @@ export class OsmConnection {
|
||||||
public async AttemptLogin() {
|
public async AttemptLogin() {
|
||||||
this.updateCapabilities()
|
this.updateCapabilities()
|
||||||
if (this.loadingStatus.data !== "logged-in") {
|
if (this.loadingStatus.data !== "logged-in") {
|
||||||
// Stay 'logged-in' if we are already logged in; this simply means we are checking for messages
|
|
||||||
this.loadingStatus.setData("loading")
|
this.loadingStatus.setData("loading")
|
||||||
|
}else{
|
||||||
|
// Stay 'logged-in' if we are already logged in; this simply means we are checking for messages
|
||||||
}
|
}
|
||||||
if (this.fakeUser) {
|
if (this.fakeUser) {
|
||||||
this.loadingStatus.setData("logged-in")
|
this.loadingStatus.setData("logged-in")
|
||||||
|
|
@ -628,15 +629,18 @@ export class OsmConnection {
|
||||||
return this._oauth_config.url + "oauth2_access_token"
|
return this._oauth_config.url + "oauth2_access_token"
|
||||||
}
|
}
|
||||||
|
|
||||||
private async loginAndroidPolyfill() {
|
/**
|
||||||
|
* Sets up a callback to the Android App, in order to receive the
|
||||||
|
* token when it arrives.
|
||||||
|
* Note that this promise might never resolve and should thus not be awaited
|
||||||
|
*/
|
||||||
|
private async androidPolyfillCaptureLogincode() {
|
||||||
const key = this.getLoginCookieName()
|
const key = this.getLoginCookieName()
|
||||||
if (localStorage.getItem(key)) {
|
if (localStorage.getItem(key)) {
|
||||||
// We are probably already logged in
|
// We are probably already logged in
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
const tokenPromise = AndroidPolyfill.requestLoginCodes()
|
const tokenPromise = AndroidPolyfill.requestLoginCodes()
|
||||||
console.trace("Opening login page for android")
|
|
||||||
await AndroidPolyfill.openLoginPage()
|
|
||||||
const token = await tokenPromise
|
const token = await tokenPromise
|
||||||
console.log("Got login token!", token)
|
console.log("Got login token!", token)
|
||||||
localStorage.setItem(key, token)
|
localStorage.setItem(key, token)
|
||||||
|
|
@ -666,7 +670,11 @@ export class OsmConnection {
|
||||||
apiUrl: this._oauth_config.api_url ?? this._oauth_config.url,
|
apiUrl: this._oauth_config.api_url ?? this._oauth_config.url,
|
||||||
})
|
})
|
||||||
if (AndroidPolyfill.inAndroid.data) {
|
if (AndroidPolyfill.inAndroid.data) {
|
||||||
this.loginAndroidPolyfill() // NO AWAIT!
|
this.androidPolyfillCaptureLogincode().then(() => {}) // NO AWAIT!
|
||||||
|
if(autoLogin){
|
||||||
|
console.trace("Opening login page for android")
|
||||||
|
AndroidPolyfill.openLoginPage()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue