forked from MapComplete/MapComplete
		
	WIP: Some changes to make the android wrapper
This commit is contained in:
		
							parent
							
								
									3adeb7b130
								
							
						
					
					
						commit
						3d2db00548
					
				
					 6 changed files with 1617 additions and 34 deletions
				
			
		
							
								
								
									
										9
									
								
								capacitor.config.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								capacitor.config.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,9 @@ | |||
| import type { CapacitorConfig } from '@capacitor/cli'; | ||||
| 
 | ||||
| const config: CapacitorConfig = { | ||||
|   appId: 'org.mapcomplete', | ||||
|   appName: 'MapComplete', | ||||
|   webDir: 'dist' | ||||
| }; | ||||
| 
 | ||||
| export default config; | ||||
							
								
								
									
										1554
									
								
								package-lock.json
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										1554
									
								
								package-lock.json
									
										
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							|  | @ -156,6 +156,9 @@ | |||
|     "not op_mini all" | ||||
|   ], | ||||
|   "dependencies": { | ||||
|     "@capacitor/android": "^6.1.2", | ||||
|     "@capacitor/core": "^6.1.2", | ||||
|     "@capacitor/geolocation": "^6.0.1", | ||||
|     "@comunica/core": "^3.0.1", | ||||
|     "@comunica/query-sparql": "^3.0.1", | ||||
|     "@comunica/query-sparql-link-traversal": "^0.3.0", | ||||
|  | @ -235,6 +238,7 @@ | |||
|     "@babeard/svelte-heroicons": "^2.0.0-rc.0", | ||||
|     "@babel/polyfill": "^7.10.4", | ||||
|     "@babel/preset-env": "7.13.8", | ||||
|     "@capacitor/cli": "^6.1.2", | ||||
|     "@monaco-editor/loader": "^1.4.0", | ||||
|     "@parcel/service-worker": "^2.6.0", | ||||
|     "@rollup/plugin-json": "^6.0.0", | ||||
|  |  | |||
|  | @ -25,7 +25,7 @@ else | |||
| fi | ||||
| 
 | ||||
| 
 | ||||
| export NODE_OPTIONS=--max-old-space-size=16000 | ||||
| export NODE_OPTIONS=--max-old-space-size=20000 | ||||
| which vite | ||||
| vite --version | ||||
| vite build --sourcemap || { echo 'Vite build failed' ; exit 1; } | ||||
|  |  | |||
|  | @ -3,6 +3,7 @@ import { LocalStorageSource } from "../Web/LocalStorageSource" | |||
| import { QueryParameters } from "../Web/QueryParameters" | ||||
| import { Translation } from "../../UI/i18n/Translation" | ||||
| import Translations from "../../UI/i18n/Translations" | ||||
| import { Geolocation } from "@capacitor/geolocation" | ||||
| 
 | ||||
| export type GeolocationPermissionState = "prompt" | "requested" | "granted" | "denied" | ||||
| 
 | ||||
|  | @ -24,7 +25,7 @@ export class GeoLocationState { | |||
|      * 'denied' means that we don't have access | ||||
|      */ | ||||
|     public readonly permission: UIEventSource<GeolocationPermissionState> = new UIEventSource( | ||||
|         "prompt" | ||||
|         "prompt", | ||||
|     ) | ||||
| 
 | ||||
|     /** | ||||
|  | @ -69,6 +70,7 @@ export class GeoLocationState { | |||
|      * A human explanation of the current gps state, to be shown on the home screen or as tooltip | ||||
|      */ | ||||
|     public readonly gpsStateExplanation: Store<Translation> | ||||
| 
 | ||||
|     constructor() { | ||||
|         const self = this | ||||
| 
 | ||||
|  | @ -128,7 +130,7 @@ export class GeoLocationState { | |||
|                 } | ||||
|                 return Translations.t.general.waitingForLocation | ||||
|             }, | ||||
|             [this.allowMoving, this.permission, this.currentGPSLocation] | ||||
|             [this.allowMoving, this.permission, this.currentGPSLocation], | ||||
|         ) | ||||
|     } | ||||
| 
 | ||||
|  | @ -201,29 +203,46 @@ export class GeoLocationState { | |||
|      * @private | ||||
|      */ | ||||
|     private async startWatching() { | ||||
|         console.log("Starts watching", navigator.geolocation, Geolocation) | ||||
|         const self = this | ||||
|         navigator.geolocation.watchPosition( | ||||
|             function (position) { | ||||
|                 self._gpsAvailable.set(true) | ||||
|                 self.currentGPSLocation.setData(position.coords) | ||||
|                 self._previousLocationGrant.setData(true) | ||||
|             }, | ||||
|             function (e) { | ||||
|                 if (e.code === 2 || e.code === 3) { | ||||
|                     self._gpsAvailable.set(false) | ||||
|                     return | ||||
|                 } | ||||
|                 self._gpsAvailable.set(true) // We go back to the default assumption that the location is physically available
 | ||||
|                 if (e.code === 1) { | ||||
|                     self.permission.set("denied") | ||||
|                     self._grantedThisSession.setData(false) | ||||
|                     return | ||||
|                 } | ||||
|                 console.warn("Could not get location with navigator.geolocation due to", e) | ||||
|             }, | ||||
|             { | ||||
|                 enableHighAccuracy: true, | ||||
|             } | ||||
|         ) | ||||
|         try { | ||||
|             await Geolocation.requestPermissions({ permissions: ["location"] }) | ||||
|             console.log("Requested permission") | ||||
|         } catch (e) { | ||||
|             // pass
 | ||||
|         } | ||||
|         try { | ||||
|             await Geolocation.watchPosition( | ||||
|                 { | ||||
|                     enableHighAccuracy: true, | ||||
|                     maximumAge: 120000, | ||||
|                 }, | ||||
|                 (position: GeolocationPosition, error: GeolocationPositionError) => { | ||||
|                     if (error) { | ||||
|                         if (error.code === 2 || error.code === 3) { | ||||
|                             self._gpsAvailable.set(false) | ||||
|                             return | ||||
|                         } | ||||
|                         self._gpsAvailable.set(true) // We go back to the default assumption that the location is physically available
 | ||||
|                         if (error.code === 1) { | ||||
|                             self.permission.set("denied") | ||||
|                             self._grantedThisSession.setData(false) | ||||
|                             return | ||||
|                         } | ||||
|                         console.warn("Could not get location with navigator.geolocation due to", error) | ||||
|                     } | ||||
| 
 | ||||
| 
 | ||||
|                     console.log("Got position:", position, JSON.stringify(position)) | ||||
|                     if (!position) { | ||||
|                         return | ||||
|                     } | ||||
|                     this._gpsAvailable.set(true) | ||||
|                     this.currentGPSLocation.setData(position.coords) | ||||
|                     this._previousLocationGrant.setData(true) | ||||
|                 }) | ||||
|         } catch (e) { | ||||
|             console.error("Could not get geolocation due to", e) | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -1,13 +1,20 @@ | |||
| { | ||||
|   "name": "MapComplete", | ||||
|   "short_name": "MapComplete", | ||||
|   "id":"mapcomplete", | ||||
|   "start_url": "index.html", | ||||
|   "lang": "en", | ||||
|   "display": "standalone", | ||||
|   "background_color": "#fff", | ||||
|   "theme_color": "#fff", | ||||
|   "background_color": "#ffffff", | ||||
|   "theme_color": "#ffffff", | ||||
|   "description": "A thematic map viewer and editor based on OpenStreetMap", | ||||
|   "orientation": "portrait-primary, landscape-primary", | ||||
|   "orientation": "portrait-primary", | ||||
|     "display_override": [ | ||||
|       "standalone", | ||||
|       "minimal-ui", | ||||
|       "browser", | ||||
|       "window-controls-overlay" | ||||
|     ], | ||||
|   "icons": [ | ||||
|     { | ||||
|       "src": "assets/generated/images/assets_svg_mapcomplete_logo72.png", | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue