forked from MapComplete/MapComplete
Feature: offline: more features to be able to work fully offline
This commit is contained in:
parent
825efdee34
commit
06aa8a3406
23 changed files with 203 additions and 60 deletions
|
|
@ -8,6 +8,7 @@ import Constants from "../../Models/Constants"
|
|||
import { Feature, Point } from "geojson"
|
||||
import { AndroidPolyfill } from "../Web/AndroidPolyfill"
|
||||
import { QueryParameters } from "../Web/QueryParameters"
|
||||
import { IsOnline } from "../Web/IsOnline"
|
||||
|
||||
interface OsmUserInfo {
|
||||
id: number
|
||||
|
|
@ -131,6 +132,7 @@ export class OsmConnection {
|
|||
* Details of the currently logged-in user; undefined if not logged in
|
||||
*/
|
||||
public userDetails: UIEventSource<UserDetails | undefined>
|
||||
|
||||
public isLoggedIn: Store<boolean>
|
||||
public gpxServiceIsOnline: UIEventSource<OsmServiceState> = new UIEventSource<OsmServiceState>(
|
||||
"unknown"
|
||||
|
|
@ -182,7 +184,7 @@ export class OsmConnection {
|
|||
this._oauth_config.oauth_secret = import.meta.env.VITE_OSM_OAUTH_SECRET
|
||||
}
|
||||
|
||||
this.userDetails = new UIEventSource<UserDetails>(undefined, "userDetails")
|
||||
this.userDetails = UIEventSource.asObject<UserDetails>(LocalStorageSource.get("user_details"), undefined)
|
||||
if (options.fakeUser) {
|
||||
const ud = this.userDetails.data
|
||||
ud.csCount = 5678
|
||||
|
|
@ -197,13 +199,7 @@ export class OsmConnection {
|
|||
}
|
||||
this.updateCapabilities()
|
||||
|
||||
this.isLoggedIn = this.userDetails.map(
|
||||
(user) =>
|
||||
!!user &&
|
||||
(this.apiIsOnline.data === "unknown" || this.apiIsOnline.data === "online"),
|
||||
[this.apiIsOnline]
|
||||
)
|
||||
|
||||
this.isLoggedIn = this.userDetails.map((user) => !!user)
|
||||
this._dryRun = options.dryRun ?? new UIEventSource<boolean>(false)
|
||||
|
||||
if (options?.shared_cookie) {
|
||||
|
|
@ -284,6 +280,9 @@ export class OsmConnection {
|
|||
}
|
||||
|
||||
public async AttemptLogin() {
|
||||
if (!IsOnline.isOnline.data) {
|
||||
return
|
||||
}
|
||||
this.updateCapabilities()
|
||||
if (this.loadingStatus.data !== "logged-in") {
|
||||
this.loadingStatus.setData("loading")
|
||||
|
|
@ -308,6 +307,9 @@ export class OsmConnection {
|
|||
}
|
||||
|
||||
private async loadUserInfo() {
|
||||
if (!IsOnline.isOnline.data) {
|
||||
return
|
||||
}
|
||||
try {
|
||||
const result = await this.interact("user/details.json")
|
||||
if (result === null) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue