From 1979147f3f38f133a355ac87d9c5225d08618f46 Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto Date: Tue, 7 Jan 2025 12:20:27 +0000 Subject: [PATCH 01/40] chore: comment out steps related to Sonarqube Context: At the moment, we do not have a Sonarqube license that we can use in the Ionic GitHub organization, and so we will skip these steps in the GitHub Action for the time being. References: https://outsystemsrd.atlassian.net/browse/RMET-3771 --- .github/workflows/github_actions.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/github_actions.yml b/.github/workflows/github_actions.yml index b164667..0ce9afd 100644 --- a/.github/workflows/github_actions.yml +++ b/.github/workflows/github_actions.yml @@ -31,11 +31,11 @@ jobs: - name: Code Coverage run: bundle exec fastlane coverage - - name: Setup sonarqube - uses: warchant/setup-sonar-scanner@v8 - - - name: Send to Sonarcloud - run: bundle exec fastlane sonarqube - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} \ No newline at end of file + #- name: Setup sonarqube + # uses: warchant/setup-sonar-scanner@v8 + + #- name: Send to Sonarcloud + # run: bundle exec fastlane sonarqube + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} \ No newline at end of file From 7d33cbed644fd508f6968af62920d9ec80251441 Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto Date: Tue, 7 Jan 2025 12:46:39 +0000 Subject: [PATCH 02/40] feat: add publish-android workflow to publish Android lib in Maven References: https://outsystemsrd.atlassian.net/browse/RMET-3975 --- .github/workflows/publish-android.yml | 42 +++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 .github/workflows/publish-android.yml diff --git a/.github/workflows/publish-android.yml b/.github/workflows/publish-android.yml new file mode 100644 index 0000000..147245e --- /dev/null +++ b/.github/workflows/publish-android.yml @@ -0,0 +1,42 @@ +name: Publish Native Android Library + +on: workflow_dispatch + +jobs: + publish-android: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + steps: + - uses: actions/checkout@v4 + - name: set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'adopt' + - name: Grant execute permission for gradlew + run: chmod +x ./gradlew + - name: Grant execute permission for publishing script + run: chmod +x ./scripts/publish-android.sh + - name: Make local props + run: | + cat << EOF > "local.properties" + ossrhUsername=${{ secrets.ANDROID_OSSRH_USERNAME }} + ossrhPassword=${{ secrets.ANDROID_OSSRH_PASSWORD }} + sonatypeStagingProfileId=${{ secrets.ANDROID_SONATYPE_STAGING_PROFILE_ID }} + signing.keyId=${{ secrets.ANDROID_SIGNING_KEY_ID }} + signing.password=${{ secrets.ANDROID_SIGNING_PASSWORD }} + signing.key=${{ secrets.ANDROID_SIGNING_KEY }} + EOF + echo "local.properties file has been created successfully." + - name: Run publish script + working-directory: ./scripts + env: + ANDROID_OSSRH_USERNAME: ${{ secrets.ANDROID_OSSRH_USERNAME }} + ANDROID_OSSRH_PASSWORD: ${{ secrets.ANDROID_OSSRH_PASSWORD }} + ANDROID_SIGNING_KEY_ID: ${{ secrets.ANDROID_SIGNING_KEY_ID }} + ANDROID_SIGNING_PASSWORD: ${{ secrets.ANDROID_SIGNING_PASSWORD }} + ANDROID_SIGNING_KEY: ${{ secrets.ANDROID_SIGNING_KEY }} + ANDROID_SONATYPE_STAGING_PROFILE_ID: ${{ secrets.ANDROID_SONATYPE_STAGING_PROFILE_ID }} + run: ./publish-android.sh \ No newline at end of file From ac9937cf3f78e618d679661ec9f58d3c52f704a8 Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto Date: Tue, 7 Jan 2025 12:50:57 +0000 Subject: [PATCH 03/40] chore: change name of workflow to something more suggestive References: https://outsystemsrd.atlassian.net/browse/RMET-3975 --- .github/workflows/{github_actions.yml => run-unit-tests.yml} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename .github/workflows/{github_actions.yml => run-unit-tests.yml} (97%) diff --git a/.github/workflows/github_actions.yml b/.github/workflows/run-unit-tests.yml similarity index 97% rename from .github/workflows/github_actions.yml rename to .github/workflows/run-unit-tests.yml index 0ce9afd..f734f6d 100644 --- a/.github/workflows/github_actions.yml +++ b/.github/workflows/run-unit-tests.yml @@ -1,4 +1,4 @@ -name: GitHub Actions +name: Run Unit Tests on: workflow_dispatch: From 5b0fcef8efdfc60a7abb95b15c9b6c9cd3e932d3 Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto Date: Tue, 7 Jan 2025 12:54:47 +0000 Subject: [PATCH 04/40] test: include own branch in workflow_dispatch rules References: https://outsystemsrd.atlassian.net/browse/RMET-3975 --- .github/workflows/run-unit-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/run-unit-tests.yml b/.github/workflows/run-unit-tests.yml index f734f6d..a0c5387 100644 --- a/.github/workflows/run-unit-tests.yml +++ b/.github/workflows/run-unit-tests.yml @@ -3,7 +3,7 @@ name: Run Unit Tests on: workflow_dispatch: push: - branches: [ main, development ] + branches: [ main, development, feat/RMET-3975/setup-pipelines] pull_request: branches: [ main, development ] From 4842bd1b9171f92654f9cedaf40d2ae89cba5a9a Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto Date: Tue, 7 Jan 2025 12:58:57 +0000 Subject: [PATCH 05/40] test: include own branch in workflow_dispatch rules References: https://outsystemsrd.atlassian.net/browse/RMET-3975 --- .github/workflows/publish-android.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/publish-android.yml b/.github/workflows/publish-android.yml index 147245e..e8d52a1 100644 --- a/.github/workflows/publish-android.yml +++ b/.github/workflows/publish-android.yml @@ -1,6 +1,9 @@ name: Publish Native Android Library -on: workflow_dispatch +on: +workflow_dispatch: +push: + branches: [feat/RMET-3975/setup-pipelines] jobs: publish-android: From 9020d9a5f979a85af5b0f7e94985eebec50d480b Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto Date: Tue, 7 Jan 2025 13:00:30 +0000 Subject: [PATCH 06/40] refactor: refactor workflow trigger rules --- .github/workflows/publish-android.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/publish-android.yml b/.github/workflows/publish-android.yml index e8d52a1..672efe7 100644 --- a/.github/workflows/publish-android.yml +++ b/.github/workflows/publish-android.yml @@ -1,9 +1,9 @@ name: Publish Native Android Library -on: -workflow_dispatch: -push: - branches: [feat/RMET-3975/setup-pipelines] +on: + workflow_dispatch: + push: + branches: [feat/RMET-3975/setup-pipelines] jobs: publish-android: From 2337e0831f6a57aae224364b6c45693a2d7d1242 Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto Date: Tue, 7 Jan 2025 14:20:53 +0000 Subject: [PATCH 07/40] refactor: update library name in script URL References: https://outsystemsrd.atlassian.net/browse/RMET-3975 --- scripts/publish-android.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/publish-android.sh b/scripts/publish-android.sh index 65ea5cc..b61f5bd 100755 --- a/scripts/publish-android.sh +++ b/scripts/publish-android.sh @@ -5,7 +5,7 @@ LOG_OUTPUT=./tmp/publish-android.txt THE_VERSION=`sed -n 's/.*\(.*\)<\/version>.*/\1/p' ../pom.xml` # Get latest io.ionic:portals XML version info -PUBLISHED_URL="https://repo1.maven.org/maven2/com/capacitorjs/geolocationlib-android/maven-metadata.xml" +PUBLISHED_URL="https://repo1.maven.org/maven2/com/capacitorjs/osgeolocation-android/maven-metadata.xml" PUBLISHED_DATA=$(curl -s $PUBLISHED_URL) PUBLISHED_VERSION="$(perl -ne 'print and last if s/.*(.*)<\/latest>.*/\1/;' <<< $PUBLISHED_DATA)" From 75cd3cfb489171a81eb0c132da028f6e08990a0f Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto Date: Tue, 7 Jan 2025 14:51:45 +0000 Subject: [PATCH 08/40] refactor: refactor library name and URLs in publish Gradle files References: https://outsystemsrd.atlassian.net/browse/RMET-3975 --- scripts/publish-module.gradle | 14 +++++++------- scripts/publish-root.gradle | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/scripts/publish-module.gradle b/scripts/publish-module.gradle index 92213c5..b7bb36d 100644 --- a/scripts/publish-module.gradle +++ b/scripts/publish-module.gradle @@ -27,7 +27,7 @@ afterEvaluate { release(MavenPublication) { // Coordinates groupId 'com.capacitorjs' - artifactId 'osgeolocationlib-android' + artifactId 'osgeolocation-android' version LIB_VERSION // Two artifacts, the `aar` (or `jar`) and the sources @@ -41,13 +41,13 @@ afterEvaluate { // POM Data pom { - name = 'geolocationlib-android' + name = 'osgeolocation-android' description = 'Geolocation Android Lib' - url = 'https://github.com/ionic-team/outsystems-geolocation/packages/android-lib' + url = 'https://github.com/ionic-team/OSGeolocationLib-Android' licenses { license { name = 'License' - url = 'https://github.com/ionic-team/outsystems-geolocation/blob/main/packages/android-lib/LICENSE' + url = 'https://github.com/ionic-team/OSGeolocationLib-Android/blob/main/LICENSE' } } developers { @@ -59,9 +59,9 @@ afterEvaluate { // Version Control Info scm { - connection = 'scm:git:github.com:ionic-team/outsystems-geolocation.git' - developerConnection = 'scm:git:ssh://github.com:ionic-team/outsystems-geolocation.git' - url = 'https://github.com/ionic-team/outsystems-geolocation/tree/main' + connection = 'scm:git:github.com:ionic-team/OSGeolocationLib-Android.git' + developerConnection = 'scm:git:ssh://github.com:ionic-team/OSGeolocationLib-Android.git' + url = 'https://github.com/ionic-team/OSGeolocationLib-Android/tree/main' } } } diff --git a/scripts/publish-root.gradle b/scripts/publish-root.gradle index ea84f30..70e8955 100644 --- a/scripts/publish-root.gradle +++ b/scripts/publish-root.gradle @@ -33,5 +33,5 @@ nexusPublishing { snapshotRepositoryUrl.set(uri("https://s01.oss.sonatype.org/content/repositories/snapshots/")) } } - repositoryDescription = 'OSGeolocation Lib v' + System.getenv('THE_VERSION') + repositoryDescription = 'OSGeolocation Android Lib v' + System.getenv('THE_VERSION') } \ No newline at end of file From 7465e9106826f61c9cd836422b4ac46a9597bf36 Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto Date: Tue, 7 Jan 2025 17:17:54 +0000 Subject: [PATCH 09/40] chore: avoid running full release References: https://outsystemsrd.atlassian.net/browse/RMET-3975 --- scripts/publish-android.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/publish-android.sh b/scripts/publish-android.sh index b61f5bd..68da13f 100755 --- a/scripts/publish-android.sh +++ b/scripts/publish-android.sh @@ -20,8 +20,8 @@ else export SHOULD_PUBLISH=true printf %"s\n" "Attempting to build and publish version $THE_VERSION" - "$ANDROID_PATH"/gradlew clean build publishReleasePublicationToSonatypeRepository closeAndReleaseSonatypeStagingRepository --no-daemon --max-workers 1 -b "$ANDROID_PATH"/build.gradle -Pandroid.useAndroidX=true > $LOG_OUTPUT 2>&1 - # "$ANDROID_PATH"/gradlew clean build publishReleasePublicationToSonatypeRepository --no-daemon --max-workers 1 -b "$ANDROID_PATH"/build.gradle -Pandroid.useAndroidX=true > $LOG_OUTPUT 2>&1 + # "$ANDROID_PATH"/gradlew clean build publishReleasePublicationToSonatypeRepository closeAndReleaseSonatypeStagingRepository --no-daemon --max-workers 1 -b "$ANDROID_PATH"/build.gradle -Pandroid.useAndroidX=true > $LOG_OUTPUT 2>&1 + "$ANDROID_PATH"/gradlew clean build publishReleasePublicationToSonatypeRepository --no-daemon --max-workers 1 -b "$ANDROID_PATH"/build.gradle -Pandroid.useAndroidX=true > $LOG_OUTPUT 2>&1 echo $RESULT From 08c695333f488ceedf4db6c3ead85e54f551d3ef Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto Date: Wed, 8 Jan 2025 09:52:32 +0000 Subject: [PATCH 10/40] refactor: remove commented lines References: https://outsystemsrd.atlassian.net/browse/RMET-3975 --- scripts/publish-android.sh | 2 ++ scripts/publish-module.gradle | 9 ++------- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/scripts/publish-android.sh b/scripts/publish-android.sh index 68da13f..dc68ae0 100755 --- a/scripts/publish-android.sh +++ b/scripts/publish-android.sh @@ -20,7 +20,9 @@ else export SHOULD_PUBLISH=true printf %"s\n" "Attempting to build and publish version $THE_VERSION" + # Publish a release to the Maven repo # "$ANDROID_PATH"/gradlew clean build publishReleasePublicationToSonatypeRepository closeAndReleaseSonatypeStagingRepository --no-daemon --max-workers 1 -b "$ANDROID_PATH"/build.gradle -Pandroid.useAndroidX=true > $LOG_OUTPUT 2>&1 + # Stage a version "$ANDROID_PATH"/gradlew clean build publishReleasePublicationToSonatypeRepository --no-daemon --max-workers 1 -b "$ANDROID_PATH"/build.gradle -Pandroid.useAndroidX=true > $LOG_OUTPUT 2>&1 echo $RESULT diff --git a/scripts/publish-module.gradle b/scripts/publish-module.gradle index b7bb36d..58aeab0 100644 --- a/scripts/publish-module.gradle +++ b/scripts/publish-module.gradle @@ -5,13 +5,8 @@ def LIB_VERSION = System.getenv('THE_VERSION') task androidSourcesJar(type: Jar) { archiveClassifier.set('sources') - //if (project.plugins.findPlugin("com.android.library")) { - from android.sourceSets.main.java.srcDirs - from android.sourceSets.main.kotlin.srcDirs - //} else { - // from sourceSets.main.java.srcDirs - // from sourceSets.main.kotlin.srcDirs - //} + from android.sourceSets.main.java.srcDirs + from android.sourceSets.main.kotlin.srcDirs } artifacts { From 84c8b08788120b81395469c634bf4ad18a51e3ed Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto Date: Wed, 8 Jan 2025 11:52:52 +0000 Subject: [PATCH 11/40] chore: uncomment line to release 0.0.1 version in Maven References: https://outsystemsrd.atlassian.net/browse/RMET-3975 --- scripts/publish-android.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/publish-android.sh b/scripts/publish-android.sh index dc68ae0..8595f9e 100755 --- a/scripts/publish-android.sh +++ b/scripts/publish-android.sh @@ -21,9 +21,9 @@ else printf %"s\n" "Attempting to build and publish version $THE_VERSION" # Publish a release to the Maven repo - # "$ANDROID_PATH"/gradlew clean build publishReleasePublicationToSonatypeRepository closeAndReleaseSonatypeStagingRepository --no-daemon --max-workers 1 -b "$ANDROID_PATH"/build.gradle -Pandroid.useAndroidX=true > $LOG_OUTPUT 2>&1 + "$ANDROID_PATH"/gradlew clean build publishReleasePublicationToSonatypeRepository closeAndReleaseSonatypeStagingRepository --no-daemon --max-workers 1 -b "$ANDROID_PATH"/build.gradle -Pandroid.useAndroidX=true > $LOG_OUTPUT 2>&1 # Stage a version - "$ANDROID_PATH"/gradlew clean build publishReleasePublicationToSonatypeRepository --no-daemon --max-workers 1 -b "$ANDROID_PATH"/build.gradle -Pandroid.useAndroidX=true > $LOG_OUTPUT 2>&1 + # "$ANDROID_PATH"/gradlew clean build publishReleasePublicationToSonatypeRepository --no-daemon --max-workers 1 -b "$ANDROID_PATH"/build.gradle -Pandroid.useAndroidX=true > $LOG_OUTPUT 2>&1 echo $RESULT From 8a1b7bedc3040e697dcc98d90bb09e04e22a5439 Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto Date: Wed, 8 Jan 2025 12:15:53 +0000 Subject: [PATCH 12/40] feat: set workflow_dispatch to manual trigger, avoiding the GitHub action to run when pushing to a branch References: https://outsystemsrd.atlassian.net/browse/RMET-3975 --- .github/workflows/publish-android.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/publish-android.yml b/.github/workflows/publish-android.yml index 672efe7..147245e 100644 --- a/.github/workflows/publish-android.yml +++ b/.github/workflows/publish-android.yml @@ -1,9 +1,6 @@ name: Publish Native Android Library -on: - workflow_dispatch: - push: - branches: [feat/RMET-3975/setup-pipelines] +on: workflow_dispatch jobs: publish-android: From b50d0086fec8eab50f049532d05efe03ce341cc5 Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto Date: Wed, 8 Jan 2025 13:55:30 +0000 Subject: [PATCH 13/40] refactor: remove own branch for workflow_dispatch branch rules References: https://outsystemsrd.atlassian.net/browse/RMET-3975 --- .github/workflows/run-unit-tests.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/run-unit-tests.yml b/.github/workflows/run-unit-tests.yml index a0c5387..c91eb2b 100644 --- a/.github/workflows/run-unit-tests.yml +++ b/.github/workflows/run-unit-tests.yml @@ -3,7 +3,7 @@ name: Run Unit Tests on: workflow_dispatch: push: - branches: [ main, development, feat/RMET-3975/setup-pipelines] + branches: [ main, development ] pull_request: branches: [ main, development ] @@ -31,6 +31,7 @@ jobs: - name: Code Coverage run: bundle exec fastlane coverage + # Commenting Sonarqube steps for now, until we are able to configure Sonarqube in Ionic repos #- name: Setup sonarqube # uses: warchant/setup-sonar-scanner@v8 From 54fb16c2bfca1b3ce5acabe7fb031a2d91e65c24 Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto Date: Wed, 8 Jan 2025 14:07:14 +0000 Subject: [PATCH 14/40] chore: update changelog References: https://outsystemsrd.atlassian.net/browse/RMET-3975 --- docs/CHANGELOG.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index ffa5173..320db6c 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -4,8 +4,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -### 2024-02-01 -- Fix: Update `github_actions.yml` file steps versions (https://outsystemsrd.atlassian.net/browse/RMET-2568). +## [1.0.0] -### 2022-04-12 -Create repository. +### 2024-02-07 +- Feat: Add workflows to run unit tests and release the library in Maven repo (https://outsystemsrd.atlassian.net/browse/RMET-3975). + +### 2025-01-07 +- Feat: Add implementation for whole library, including `getCurrentPosition`, `watchPosition`, and `clearWatch` (https://outsystemsrd.atlassian.net/browse/RMET-3370). +- Chore: Create repository (https://outsystemsrd.atlassian.net/browse/RMET-3975). From 0f50378623e16be1ee2508c83085902ae4d23bf7 Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto Date: Wed, 8 Jan 2025 14:17:43 +0000 Subject: [PATCH 15/40] chore: remove duplicated files References: https://outsystemsrd.atlassian.net/browse/RMET-3975 --- LICENSE | 21 --------------------- README.md | 3 --- docs/LICENSE | 2 +- pull_request_template.md | 32 -------------------------------- 4 files changed, 1 insertion(+), 57 deletions(-) delete mode 100644 LICENSE delete mode 100644 README.md delete mode 100644 pull_request_template.md diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 83a02f3..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2024 OutSystems - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/README.md b/README.md deleted file mode 100644 index f7f4c3f..0000000 --- a/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# OSGeolocationLib-Android - -The `OSGeolocationLib-Android` is a library built using `Kotlin`. diff --git a/docs/LICENSE b/docs/LICENSE index c2979b0..83a02f3 100644 --- a/docs/LICENSE +++ b/docs/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2022 OutSystems +Copyright (c) 2024 OutSystems Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/pull_request_template.md b/pull_request_template.md deleted file mode 100644 index 8127c95..0000000 --- a/pull_request_template.md +++ /dev/null @@ -1,32 +0,0 @@ -## Description - - -## Context - - - -## Type of changes - -- [ ] Fix (non-breaking change which fixes an issue) -- [ ] Feature (non-breaking change which adds functionality) -- [ ] Refactor (cosmetic changes) -- [ ] Breaking change (change that would cause existing functionality to not work as expected) - -## Platforms affected -- [ ] Android -- [ ] iOS -- [ ] JavaScript - -## Tests - - - -## Screenshots (if appropriate) - -## Checklist - -- [ ] Pull request title follows the format `RNMT-XXXX ` -- [ ] Code follows code style of this project -- [ ] CHANGELOG.md file is correctly updated -- [ ] Changes require an update to the documentation - - [ ] Documentation has been updated accordingly From 2f07d875a57cee396a1324412929da06ddc7ab94 Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto <alexandre.jacinto@outsystems.com> Date: Wed, 8 Jan 2025 15:00:01 +0000 Subject: [PATCH 16/40] chore: update README.md References: https://outsystemsrd.atlassian.net/browse/RMET-3975 --- docs/README.md | 82 +++++++++++++++++++++++++++++++++----------------- 1 file changed, 55 insertions(+), 27 deletions(-) diff --git a/docs/README.md b/docs/README.md index 1633751..b6d3d79 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,50 +1,78 @@ # OSGeolocationLib -Welcome to **OSGeolocationLib**. This repository serves as a template to create repositories used to build Android libraries. This file will guide you through that process, that is defined by two sequential steps: +The `# OSGeolocationLib-Android` is a library built using `Kotlin` that provides geolocation features for Android applications. -1. Use the current repository as the template for the new one. -2. Clone the new repository on our machine. -3. Run a script that updates the created repository with the correct information. +The `OSGLOCController` class provides the main features of the Library, which are: +- obtaining the location/position of the device a single time; +- adding a watch to obtain periodic location updates; +- clearing/removing a previously added watch, turning off location updates. -These steps are detailed in the next sections. -:warning: Every step listed here must be successfully completed before you start working on the new repository. +## Index -## Create a Repository Based on the Template +- [Motivation](#motivation) +- [Usage](#usage) +- [Methods](#methods) + - [Obtain the location of the device](#obtain-the-current-location-of-the-device) + - [Add a watch to obtain periodic location updates](#add-a-watch-for-periodic-location-updates) + - [Clear a previously added watch](#clear-a-watch-that-was-addded-previously) -First, we need to create a new repository. To accomplish this, please press the **Use this template** button available on the repository's GitHub webpage. +## Motivation -![Use this template button](./assets/useThisTemplateButton.png) +This library is to be used by the Geolocation Plugin for [OutSystems' Cordova Plugin](https://github.com/ionic-team/cordova-outsystems-geolocation) and [Ionic's Capacitor Plugin](https://github.com/ionic-team/outsystems-geolocation). -Next, we have to define the new repository's name. In order to get the maximum performance of the following step, we advise you to use the **[ProjectName]Lib-Android** format for the name. The names used for the **Health and Fitness** and the **Social Logins** are valid examples of the expected format (_OSHealthFitnessLib-Android_ and _OSSocialLoginsLib-Android_ respectively). +## Usage -The following image shows an example of the creation of a repository for the Android' Payments Library. +In your app-level gradle file, import the `OSGeolocationLib` library like so: -![Example for payments repository name](./assets/repositoryNameExample.png) + dependencies { + implementation("com.capacitorjs:osgeolocation-android:1.0.0") + } -After filling up the form as needed, the last step to effectively create the repository is the click on the **Create repository from template** button. -![Create repository from template button](./assets/createRepositoryButton.png) +## Methods -## Clone the New Repository +As mentioned before, the library offers the `OSGLOCController` class that provides the following methods to interact with: -After completing the previous step, the next one is something common done in every repository a developer needs to do work on: clone the repository on the local machine. +### Obtain the current position of the device -## Run the **generator_script.sh** +```kotlin +suspend fun getCurrentPosition( + activity: Activity, + options: OSGLOCLocationOptions +): Result<OSGLOCLocationResult> +``` + +The method is composed of the following input parameters: +- **activity**: the `Activity` from the app using the library to use when obtaining the location. +- **options**: `OSGLOCLocationOptions` with the options with which to make the location request with (e.g. timeout). -To finish the process, we just have one last thing to do. Run the **generator_script.sh** script that automates a couple of changes we need to apply. It is included in the _scripts_ folder. +The method returns a Result containing either an object of type `OSGLOCLocationResult`, which includes the geolocation data (e.g. latitide, longitude), or an exception that should be handled by the caller app. -To run the script, please execute the following commands on **Terminal**: +### Add a watch for periodic location updates +```kotlin +fun addWatch( + activity: Activity, + options: OSGLOCLocationOptions, + watchId: String +): Flow<Result<List<OSGLOCLocationResult>>> ``` -cd scripts -sh generator_script.sh + +The method is composed of the following input parameters: +- **activity**: the `Activity` from the app using the library to use when obtaining the location updates. +- **options**: `OSGLOCLocationOptions` with the options with which to make the location updates request with (e.g. timeout). +- **watchId**: a unique id identifying the watch to add, so that it can be removed later. + +The method returns a Flow in which hthe location updates will be emitted into. + +### Clear a watch that was added previously + +```kotlin +fun clearWatch(id: String): Boolean ``` -Here's the complete list of what the script does: +The method is composed of the following input parameters: +- **id**: the `watchId` identigying the watch to remove. -- The script provides a bit of information, such as mentioning the name that it will use as the Library name (its based on the one you used while creating the repository on GitHub). -- Requests the user for the application's package identifier. The format required is provided and needs to be complied with in order to advance. -- It informs that the script itself will be deleted, as it is a one time execution only. -- It performs the needed changes, replacing all placeholder's organisational identifier and library name for the ones provided by the user. -- To conclude, the script commits and pushes the changes to the remote repository. +The method returns a Boolean indicating if the watch was cleared or not (in case the watch isn't found). \ No newline at end of file From 36c3f443640125dfc153f0a55277348b3e385039 Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto <alexandre.jacinto@outsystems.com> Date: Wed, 8 Jan 2025 15:01:12 +0000 Subject: [PATCH 17/40] refactor: fix name of library in README.md References: https://outsystemsrd.atlassian.net/browse/RMET-3975 --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index b6d3d79..0ff4419 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,6 +1,6 @@ # OSGeolocationLib -The `# OSGeolocationLib-Android` is a library built using `Kotlin` that provides geolocation features for Android applications. +The `OSGeolocationLib-Android` is a library built using `Kotlin` that provides geolocation features for Android applications. The `OSGLOCController` class provides the main features of the Library, which are: - obtaining the location/position of the device a single time; From d778351e5fbecd774054470985532bcdd61455a3 Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto <alexandre.jacinto@outsystems.com> Date: Wed, 8 Jan 2025 15:02:35 +0000 Subject: [PATCH 18/40] fix: fix subtitles in README.md References: https://outsystemsrd.atlassian.net/browse/RMET-3975 --- docs/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/README.md b/docs/README.md index 0ff4419..9bc732d 100644 --- a/docs/README.md +++ b/docs/README.md @@ -13,9 +13,9 @@ The `OSGLOCController` class provides the main features of the Library, which ar - [Motivation](#motivation) - [Usage](#usage) - [Methods](#methods) - - [Obtain the location of the device](#obtain-the-current-location-of-the-device) + - [Obtain the current location of the device](#obtain-the-current-location-of-the-device) - [Add a watch to obtain periodic location updates](#add-a-watch-for-periodic-location-updates) - - [Clear a previously added watch](#clear-a-watch-that-was-addded-previously) + - [Clear a watch that was added previously](#clear-a-watch-that-was-addded-previously) ## Motivation From afc0bb4be6aaa619da5edcc2ca3144182786bac3 Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto <alexandre.jacinto@outsystems.com> Date: Wed, 8 Jan 2025 15:03:55 +0000 Subject: [PATCH 19/40] fix: fix subtitle in README.md References: https://outsystemsrd.atlassian.net/browse/RMET-3975 --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 9bc732d..2ff10e1 100644 --- a/docs/README.md +++ b/docs/README.md @@ -14,7 +14,7 @@ The `OSGLOCController` class provides the main features of the Library, which ar - [Usage](#usage) - [Methods](#methods) - [Obtain the current location of the device](#obtain-the-current-location-of-the-device) - - [Add a watch to obtain periodic location updates](#add-a-watch-for-periodic-location-updates) + - [Add a watch for periodic location updates](#add-a-watch-for-periodic-location-updates) - [Clear a watch that was added previously](#clear-a-watch-that-was-addded-previously) ## Motivation From 148471aca39018417327a50bc03d2dc916917e5c Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto <alexandre.jacinto@outsystems.com> Date: Wed, 8 Jan 2025 15:05:22 +0000 Subject: [PATCH 20/40] fix: fix subtitles in README.md References: https://outsystemsrd.atlassian.net/browse/RMET-3975 --- docs/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/README.md b/docs/README.md index 2ff10e1..8464fa4 100644 --- a/docs/README.md +++ b/docs/README.md @@ -15,7 +15,7 @@ The `OSGLOCController` class provides the main features of the Library, which ar - [Methods](#methods) - [Obtain the current location of the device](#obtain-the-current-location-of-the-device) - [Add a watch for periodic location updates](#add-a-watch-for-periodic-location-updates) - - [Clear a watch that was added previously](#clear-a-watch-that-was-addded-previously) + - [Clear a watch that was added previously](#clear-a-watch-that-was-added-previously) ## Motivation @@ -34,7 +34,7 @@ In your app-level gradle file, import the `OSGeolocationLib` library like so: As mentioned before, the library offers the `OSGLOCController` class that provides the following methods to interact with: -### Obtain the current position of the device +### Obtain the current location of the device ```kotlin suspend fun getCurrentPosition( From 41af2cca75832898d592d6b3878fc13bf7d43839 Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto <alexandre.jacinto@outsystems.com> Date: Wed, 8 Jan 2025 15:06:50 +0000 Subject: [PATCH 21/40] refactor: refactoring text References: https://outsystemsrd.atlassian.net/browse/RMET-3975 --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 8464fa4..0bd655a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -47,7 +47,7 @@ The method is composed of the following input parameters: - **activity**: the `Activity` from the app using the library to use when obtaining the location. - **options**: `OSGLOCLocationOptions` with the options with which to make the location request with (e.g. timeout). -The method returns a Result containing either an object of type `OSGLOCLocationResult`, which includes the geolocation data (e.g. latitide, longitude), or an exception that should be handled by the caller app. +The method returns a `Result` containing either an object of type `OSGLOCLocationResult`, which includes the geolocation data (e.g. latitide, longitude), or an exception that should be handled by the caller app. ### Add a watch for periodic location updates From 1bf7cd8dbfefcca82be46d23685e7778f453ebfb Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto <alexandre.jacinto@outsystems.com> Date: Wed, 8 Jan 2025 15:46:47 +0000 Subject: [PATCH 22/40] fix: publish library under `io.ionic.libs` instead of `com.capacitorjs` References: https://outsystemsrd.atlassian.net/browse/RMET-3975 --- .github/workflows/publish-android.yml | 5 ++++- scripts/publish-android.sh | 6 +++--- scripts/publish-module.gradle | 4 ++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.github/workflows/publish-android.yml b/.github/workflows/publish-android.yml index 147245e..f52e390 100644 --- a/.github/workflows/publish-android.yml +++ b/.github/workflows/publish-android.yml @@ -1,6 +1,9 @@ name: Publish Native Android Library -on: workflow_dispatch +on: + workflow_dispatch: + push: + branches: [ feat/RMET-3975/setup-pipelines ] jobs: publish-android: diff --git a/scripts/publish-android.sh b/scripts/publish-android.sh index 8595f9e..0e5c9c4 100755 --- a/scripts/publish-android.sh +++ b/scripts/publish-android.sh @@ -5,7 +5,7 @@ LOG_OUTPUT=./tmp/publish-android.txt THE_VERSION=`sed -n 's/.*<version>\(.*\)<\/version>.*/\1/p' ../pom.xml` # Get latest io.ionic:portals XML version info -PUBLISHED_URL="https://repo1.maven.org/maven2/com/capacitorjs/osgeolocation-android/maven-metadata.xml" +PUBLISHED_URL="https://repo1.maven.org/maven2/io/ionic/libs/osgeolocation-android/maven-metadata.xml" PUBLISHED_DATA=$(curl -s $PUBLISHED_URL) PUBLISHED_VERSION="$(perl -ne 'print and last if s/.*<latest>(.*)<\/latest>.*/\1/;' <<< $PUBLISHED_DATA)" @@ -21,9 +21,9 @@ else printf %"s\n" "Attempting to build and publish version $THE_VERSION" # Publish a release to the Maven repo - "$ANDROID_PATH"/gradlew clean build publishReleasePublicationToSonatypeRepository closeAndReleaseSonatypeStagingRepository --no-daemon --max-workers 1 -b "$ANDROID_PATH"/build.gradle -Pandroid.useAndroidX=true > $LOG_OUTPUT 2>&1 + # "$ANDROID_PATH"/gradlew clean build publishReleasePublicationToSonatypeRepository closeAndReleaseSonatypeStagingRepository --no-daemon --max-workers 1 -b "$ANDROID_PATH"/build.gradle -Pandroid.useAndroidX=true > $LOG_OUTPUT 2>&1 # Stage a version - # "$ANDROID_PATH"/gradlew clean build publishReleasePublicationToSonatypeRepository --no-daemon --max-workers 1 -b "$ANDROID_PATH"/build.gradle -Pandroid.useAndroidX=true > $LOG_OUTPUT 2>&1 + "$ANDROID_PATH"/gradlew clean build publishReleasePublicationToSonatypeRepository --no-daemon --max-workers 1 -b "$ANDROID_PATH"/build.gradle -Pandroid.useAndroidX=true > $LOG_OUTPUT 2>&1 echo $RESULT diff --git a/scripts/publish-module.gradle b/scripts/publish-module.gradle index 58aeab0..3b589e9 100644 --- a/scripts/publish-module.gradle +++ b/scripts/publish-module.gradle @@ -13,7 +13,7 @@ artifacts { archives androidSourcesJar } -group = 'com.capacitorjs' +group = 'io.ionic.libs' version = LIB_VERSION afterEvaluate { @@ -21,7 +21,7 @@ afterEvaluate { publications { release(MavenPublication) { // Coordinates - groupId 'com.capacitorjs' + groupId 'io.ionic.libs' artifactId 'osgeolocation-android' version LIB_VERSION From 011fbfd92bb3f7788021ca090b56cfc8d1ed040e Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto <alexandre.jacinto@outsystems.com> Date: Wed, 8 Jan 2025 16:27:01 +0000 Subject: [PATCH 23/40] chore: set workflow_dispatch to manual trigger References: https://outsystemsrd.atlassian.net/browse/RMET-3975 --- .github/workflows/publish-android.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/publish-android.yml b/.github/workflows/publish-android.yml index f52e390..4d6f80c 100644 --- a/.github/workflows/publish-android.yml +++ b/.github/workflows/publish-android.yml @@ -1,9 +1,6 @@ name: Publish Native Android Library -on: - workflow_dispatch: - push: - branches: [ feat/RMET-3975/setup-pipelines ] +on: workflow_dispatch: jobs: publish-android: From 765b75db8b9a1dc0c6b9aee3088aab588dc3d684 Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto <alexandre.jacinto@outsystems.com> Date: Wed, 8 Jan 2025 16:29:41 +0000 Subject: [PATCH 24/40] fix: fix typo in yml file References: https://outsystemsrd.atlassian.net/browse/RMET-3975 --- .github/workflows/publish-android.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish-android.yml b/.github/workflows/publish-android.yml index 4d6f80c..147245e 100644 --- a/.github/workflows/publish-android.yml +++ b/.github/workflows/publish-android.yml @@ -1,6 +1,6 @@ name: Publish Native Android Library -on: workflow_dispatch: +on: workflow_dispatch jobs: publish-android: From 50d602378baa1ccf0af603955675b8aaca3a6bec Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto <alexandre.jacinto@outsystems.com> Date: Thu, 9 Jan 2025 10:54:17 +0000 Subject: [PATCH 25/40] chore: remove JIRA tickets from CHANGELOG.md References: https://outsystemsrd.atlassian.net/browse/RMET-3975 --- docs/CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 320db6c..f50c9bf 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -7,8 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [1.0.0] ### 2024-02-07 -- Feat: Add workflows to run unit tests and release the library in Maven repo (https://outsystemsrd.atlassian.net/browse/RMET-3975). +- Feat: Add workflows to run unit tests and release the library in Maven repo. ### 2025-01-07 -- Feat: Add implementation for whole library, including `getCurrentPosition`, `watchPosition`, and `clearWatch` (https://outsystemsrd.atlassian.net/browse/RMET-3370). -- Chore: Create repository (https://outsystemsrd.atlassian.net/browse/RMET-3975). +- Feat: Add implementation for whole library, including `getCurrentPosition`, `watchPosition`, and `clearWatch`. +- Chore: Create repository. From 83d60de2e22a45669f22d7d56b7e9ec530475a45 Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto <alexandre.jacinto@outsystems.com> Date: Thu, 9 Jan 2025 10:57:45 +0000 Subject: [PATCH 26/40] chore: update license from OutSystems to Ionic References: https://outsystemsrd.atlassian.net/browse/RMET-3975 --- docs/LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/LICENSE b/docs/LICENSE index 83a02f3..774efa0 100644 --- a/docs/LICENSE +++ b/docs/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2024 OutSystems +Copyright (c) 2025 Ionic Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From 9d8e48c5fd053b938333635bcd19cf7fc9551906 Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto <alexandre.jacinto@outsystems.com> Date: Thu, 9 Jan 2025 11:02:09 +0000 Subject: [PATCH 27/40] chore: uncomment line that actually releases lib in Maven repo References: https://outsystemsrd.atlassian.net/browse/RMET-3975 --- scripts/publish-android.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/publish-android.sh b/scripts/publish-android.sh index 0e5c9c4..562060a 100755 --- a/scripts/publish-android.sh +++ b/scripts/publish-android.sh @@ -21,9 +21,9 @@ else printf %"s\n" "Attempting to build and publish version $THE_VERSION" # Publish a release to the Maven repo - # "$ANDROID_PATH"/gradlew clean build publishReleasePublicationToSonatypeRepository closeAndReleaseSonatypeStagingRepository --no-daemon --max-workers 1 -b "$ANDROID_PATH"/build.gradle -Pandroid.useAndroidX=true > $LOG_OUTPUT 2>&1 + "$ANDROID_PATH"/gradlew clean build publishReleasePublicationToSonatypeRepository closeAndReleaseSonatypeStagingRepository --no-daemon --max-workers 1 -b "$ANDROID_PATH"/build.gradle -Pandroid.useAndroidX=true > $LOG_OUTPUT 2>&1 # Stage a version - "$ANDROID_PATH"/gradlew clean build publishReleasePublicationToSonatypeRepository --no-daemon --max-workers 1 -b "$ANDROID_PATH"/build.gradle -Pandroid.useAndroidX=true > $LOG_OUTPUT 2>&1 + # "$ANDROID_PATH"/gradlew clean build publishReleasePublicationToSonatypeRepository --no-daemon --max-workers 1 -b "$ANDROID_PATH"/build.gradle -Pandroid.useAndroidX=true > $LOG_OUTPUT 2>&1 echo $RESULT From 3340682705e8b9d1d59b79222c8c4240fcf26149 Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto <alexandre.jacinto@outsystems.com> Date: Thu, 9 Jan 2025 11:54:23 +0000 Subject: [PATCH 28/40] fix: LICENSE file directory in publish-module.gradle file Co-authored-by: Pedro Bilro <pedro.gustavo.bilro@outsystems.com> --- scripts/publish-module.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/publish-module.gradle b/scripts/publish-module.gradle index 3b589e9..c306748 100644 --- a/scripts/publish-module.gradle +++ b/scripts/publish-module.gradle @@ -42,7 +42,7 @@ afterEvaluate { licenses { license { name = 'License' - url = 'https://github.com/ionic-team/OSGeolocationLib-Android/blob/main/LICENSE' + url = 'https://github.com/ionic-team/OSGeolocationLib-Android/blob/main/docs/LICENSE' } } developers { From 0847edaae8a8e9573b47fa084e305272f4cfd77f Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto <alexandre.jacinto@outsystems.com> Date: Thu, 9 Jan 2025 11:56:40 +0000 Subject: [PATCH 29/40] refactor: refactor phrasing in README file --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 0bd655a..d1da629 100644 --- a/docs/README.md +++ b/docs/README.md @@ -19,7 +19,7 @@ The `OSGLOCController` class provides the main features of the Library, which ar ## Motivation -This library is to be used by the Geolocation Plugin for [OutSystems' Cordova Plugin](https://github.com/ionic-team/cordova-outsystems-geolocation) and [Ionic's Capacitor Plugin](https://github.com/ionic-team/outsystems-geolocation). +This library is used by the Geolocation Plugin for [OutSystems' Cordova Plugin](https://github.com/ionic-team/cordova-outsystems-geolocation) and [Ionic's Capacitor Plugin](https://github.com/ionic-team/outsystems-geolocation). ## Usage From 7b5fa4158ba2ddeea30d44997d5b4f65a8dbb619 Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto <alexandre.jacinto@outsystems.com> Date: Thu, 9 Jan 2025 11:57:37 +0000 Subject: [PATCH 30/40] fix: fixing typo in README Co-authored-by: Pedro Bilro <pedro.gustavo.bilro@outsystems.com> --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index d1da629..20f7d95 100644 --- a/docs/README.md +++ b/docs/README.md @@ -64,7 +64,7 @@ The method is composed of the following input parameters: - **options**: `OSGLOCLocationOptions` with the options with which to make the location updates request with (e.g. timeout). - **watchId**: a unique id identifying the watch to add, so that it can be removed later. -The method returns a Flow in which hthe location updates will be emitted into. +The method returns a Flow in which the location updates will be emitted to. ### Clear a watch that was added previously From fba7259c0834a058fc89bf641272bfe1c7e7c239 Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto <alexandre.jacinto@outsystems.com> Date: Thu, 9 Jan 2025 11:58:44 +0000 Subject: [PATCH 31/40] chore: fixing dates in CHANGELOG file --- docs/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index f50c9bf..cf80746 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -6,7 +6,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [1.0.0] -### 2024-02-07 +### 2025-02-07 - Feat: Add workflows to run unit tests and release the library in Maven repo. ### 2025-01-07 From cf2961d0cfb5228414c0dc3dde4f16602e5a6e63 Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto <alexandre.jacinto@outsystems.com> Date: Thu, 9 Jan 2025 12:11:21 +0000 Subject: [PATCH 32/40] chore: set minSdk to 23 to keep minimum Android version for Capacitor plugin --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 064f71b..b988dc1 100644 --- a/build.gradle +++ b/build.gradle @@ -44,7 +44,7 @@ android { compileSdk 35 defaultConfig { - minSdk 26 + minSdk 23 targetSdk 35 versionCode 1 versionName "1.0" From a2e509bbeb67c7aefd5e741afae6ccf661638e3c Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto <alexandre.jacinto@outsystems.com> Date: Thu, 9 Jan 2025 12:26:59 +0000 Subject: [PATCH 33/40] chore: move doc files to root --- docs/CHANGELOG.md => CHANGELOG.md | 0 docs/LICENSE => LICENSE | 0 docs/README.md => README.md | 0 docs/assets/createRepositoryButton.png | Bin 13627 -> 0 bytes docs/assets/repositoryNameExample.png | Bin 26229 -> 0 bytes docs/assets/useThisTemplateButton.png | Bin 6389 -> 0 bytes ...uest_template.md => pull_request_template.md | 0 7 files changed, 0 insertions(+), 0 deletions(-) rename docs/CHANGELOG.md => CHANGELOG.md (100%) rename docs/LICENSE => LICENSE (100%) rename docs/README.md => README.md (100%) delete mode 100644 docs/assets/createRepositoryButton.png delete mode 100644 docs/assets/repositoryNameExample.png delete mode 100644 docs/assets/useThisTemplateButton.png rename docs/pull_request_template.md => pull_request_template.md (100%) diff --git a/docs/CHANGELOG.md b/CHANGELOG.md similarity index 100% rename from docs/CHANGELOG.md rename to CHANGELOG.md diff --git a/docs/LICENSE b/LICENSE similarity index 100% rename from docs/LICENSE rename to LICENSE diff --git a/docs/README.md b/README.md similarity index 100% rename from docs/README.md rename to README.md diff --git a/docs/assets/createRepositoryButton.png b/docs/assets/createRepositoryButton.png deleted file mode 100644 index 423ed4af659df90736f8470198d25b36a4b1db3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13627 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 diff --git a/docs/assets/repositoryNameExample.png b/docs/assets/repositoryNameExample.png deleted file mode 100644 index a381131b2b65a26a09fb12a109e6d9bf1151a112..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26229 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 S4A=b^yVlh<(5ln0i~2uyd5}8* diff --git a/docs/assets/useThisTemplateButton.png b/docs/assets/useThisTemplateButton.png deleted file mode 100644 index 22dab190826be65ef98b64a67b67e44ea9112064..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6389 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 diff --git a/docs/pull_request_template.md b/pull_request_template.md similarity index 100% rename from docs/pull_request_template.md rename to pull_request_template.md From 119cc026f95fa651d9d0b131166ef1beb79c1648 Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto <alexandre.jacinto@outsystems.com> Date: Thu, 9 Jan 2025 12:40:41 +0000 Subject: [PATCH 34/40] chore: fix dates in CHANGELOG --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cf80746..556b85d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [1.0.0] -### 2025-02-07 +### 2025-01-08 - Feat: Add workflows to run unit tests and release the library in Maven repo. ### 2025-01-07 From 39b356c1824b806b01b32282dc84735d7d6ae08b Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto <alexandre.jacinto@outsystems.com> Date: Thu, 9 Jan 2025 12:42:54 +0000 Subject: [PATCH 35/40] chore: set workflow to trigger in branch push to test it --- .github/workflows/publish-android.yml | 6 +++++- scripts/publish-android.sh | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/publish-android.yml b/.github/workflows/publish-android.yml index 147245e..c74bd9e 100644 --- a/.github/workflows/publish-android.yml +++ b/.github/workflows/publish-android.yml @@ -1,6 +1,10 @@ name: Publish Native Android Library -on: workflow_dispatch +#on: workflow_dispatch +on: + workflow_dispatch: + push: + branches: [ feat/RMET-3975/setup-pipelines ] jobs: publish-android: diff --git a/scripts/publish-android.sh b/scripts/publish-android.sh index 562060a..0e5c9c4 100755 --- a/scripts/publish-android.sh +++ b/scripts/publish-android.sh @@ -21,9 +21,9 @@ else printf %"s\n" "Attempting to build and publish version $THE_VERSION" # Publish a release to the Maven repo - "$ANDROID_PATH"/gradlew clean build publishReleasePublicationToSonatypeRepository closeAndReleaseSonatypeStagingRepository --no-daemon --max-workers 1 -b "$ANDROID_PATH"/build.gradle -Pandroid.useAndroidX=true > $LOG_OUTPUT 2>&1 + # "$ANDROID_PATH"/gradlew clean build publishReleasePublicationToSonatypeRepository closeAndReleaseSonatypeStagingRepository --no-daemon --max-workers 1 -b "$ANDROID_PATH"/build.gradle -Pandroid.useAndroidX=true > $LOG_OUTPUT 2>&1 # Stage a version - # "$ANDROID_PATH"/gradlew clean build publishReleasePublicationToSonatypeRepository --no-daemon --max-workers 1 -b "$ANDROID_PATH"/build.gradle -Pandroid.useAndroidX=true > $LOG_OUTPUT 2>&1 + "$ANDROID_PATH"/gradlew clean build publishReleasePublicationToSonatypeRepository --no-daemon --max-workers 1 -b "$ANDROID_PATH"/build.gradle -Pandroid.useAndroidX=true > $LOG_OUTPUT 2>&1 echo $RESULT From 9956f8cc9860662958322d36cde687006e7c1c1c Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto <alexandre.jacinto@outsystems.com> Date: Thu, 9 Jan 2025 12:47:08 +0000 Subject: [PATCH 36/40] test: test running workflow without creating local.properties file --- .github/workflows/publish-android.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/publish-android.yml b/.github/workflows/publish-android.yml index c74bd9e..94736d3 100644 --- a/.github/workflows/publish-android.yml +++ b/.github/workflows/publish-android.yml @@ -23,17 +23,17 @@ jobs: run: chmod +x ./gradlew - name: Grant execute permission for publishing script run: chmod +x ./scripts/publish-android.sh - - name: Make local props - run: | - cat << EOF > "local.properties" - ossrhUsername=${{ secrets.ANDROID_OSSRH_USERNAME }} - ossrhPassword=${{ secrets.ANDROID_OSSRH_PASSWORD }} - sonatypeStagingProfileId=${{ secrets.ANDROID_SONATYPE_STAGING_PROFILE_ID }} - signing.keyId=${{ secrets.ANDROID_SIGNING_KEY_ID }} - signing.password=${{ secrets.ANDROID_SIGNING_PASSWORD }} - signing.key=${{ secrets.ANDROID_SIGNING_KEY }} - EOF - echo "local.properties file has been created successfully." + #- name: Make local props + # run: | + # cat << EOF > "local.properties" + # ossrhUsername=${{ secrets.ANDROID_OSSRH_USERNAME }} + # ossrhPassword=${{ secrets.ANDROID_OSSRH_PASSWORD }} + # sonatypeStagingProfileId=${{ secrets.ANDROID_SONATYPE_STAGING_PROFILE_ID }} + # signing.keyId=${{ secrets.ANDROID_SIGNING_KEY_ID }} + # signing.password=${{ secrets.ANDROID_SIGNING_PASSWORD }} + # signing.key=${{ secrets.ANDROID_SIGNING_KEY }} + # EOF + # echo "local.properties file has been created successfully." - name: Run publish script working-directory: ./scripts env: From 8976fe6d15a088128ace174eab7abcc4c226a9c4 Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto <alexandre.jacinto@outsystems.com> Date: Thu, 9 Jan 2025 12:55:54 +0000 Subject: [PATCH 37/40] test: use local.properties file instead of creating environment variables --- .github/workflows/publish-android.yml | 36 +++++++++++++-------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/publish-android.yml b/.github/workflows/publish-android.yml index 94736d3..67f8041 100644 --- a/.github/workflows/publish-android.yml +++ b/.github/workflows/publish-android.yml @@ -23,24 +23,24 @@ jobs: run: chmod +x ./gradlew - name: Grant execute permission for publishing script run: chmod +x ./scripts/publish-android.sh - #- name: Make local props - # run: | - # cat << EOF > "local.properties" - # ossrhUsername=${{ secrets.ANDROID_OSSRH_USERNAME }} - # ossrhPassword=${{ secrets.ANDROID_OSSRH_PASSWORD }} - # sonatypeStagingProfileId=${{ secrets.ANDROID_SONATYPE_STAGING_PROFILE_ID }} - # signing.keyId=${{ secrets.ANDROID_SIGNING_KEY_ID }} - # signing.password=${{ secrets.ANDROID_SIGNING_PASSWORD }} - # signing.key=${{ secrets.ANDROID_SIGNING_KEY }} - # EOF - # echo "local.properties file has been created successfully." + - name: Make local props + run: | + cat << EOF > "local.properties" + ossrhUsername=${{ secrets.ANDROID_OSSRH_USERNAME }} + ossrhPassword=${{ secrets.ANDROID_OSSRH_PASSWORD }} + sonatypeStagingProfileId=${{ secrets.ANDROID_SONATYPE_STAGING_PROFILE_ID }} + signing.keyId=${{ secrets.ANDROID_SIGNING_KEY_ID }} + signing.password=${{ secrets.ANDROID_SIGNING_PASSWORD }} + signing.key=${{ secrets.ANDROID_SIGNING_KEY }} + EOF + echo "local.properties file has been created successfully." - name: Run publish script working-directory: ./scripts - env: - ANDROID_OSSRH_USERNAME: ${{ secrets.ANDROID_OSSRH_USERNAME }} - ANDROID_OSSRH_PASSWORD: ${{ secrets.ANDROID_OSSRH_PASSWORD }} - ANDROID_SIGNING_KEY_ID: ${{ secrets.ANDROID_SIGNING_KEY_ID }} - ANDROID_SIGNING_PASSWORD: ${{ secrets.ANDROID_SIGNING_PASSWORD }} - ANDROID_SIGNING_KEY: ${{ secrets.ANDROID_SIGNING_KEY }} - ANDROID_SONATYPE_STAGING_PROFILE_ID: ${{ secrets.ANDROID_SONATYPE_STAGING_PROFILE_ID }} + # env: + # ANDROID_OSSRH_USERNAME: ${{ secrets.ANDROID_OSSRH_USERNAME }} + # ANDROID_OSSRH_PASSWORD: ${{ secrets.ANDROID_OSSRH_PASSWORD }} + # ANDROID_SIGNING_KEY_ID: ${{ secrets.ANDROID_SIGNING_KEY_ID }} + # ANDROID_SIGNING_PASSWORD: ${{ secrets.ANDROID_SIGNING_PASSWORD }} + # ANDROID_SIGNING_KEY: ${{ secrets.ANDROID_SIGNING_KEY }} + # ANDROID_SONATYPE_STAGING_PROFILE_ID: ${{ secrets.ANDROID_SONATYPE_STAGING_PROFILE_ID }} run: ./publish-android.sh \ No newline at end of file From 66702cc43f25298236bbf09b6fdda143518ca517 Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto <alexandre.jacinto@outsystems.com> Date: Thu, 9 Jan 2025 13:01:10 +0000 Subject: [PATCH 38/40] chore: remove commented lines --- .github/workflows/publish-android.yml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/.github/workflows/publish-android.yml b/.github/workflows/publish-android.yml index 67f8041..c9a5cd2 100644 --- a/.github/workflows/publish-android.yml +++ b/.github/workflows/publish-android.yml @@ -36,11 +36,4 @@ jobs: echo "local.properties file has been created successfully." - name: Run publish script working-directory: ./scripts - # env: - # ANDROID_OSSRH_USERNAME: ${{ secrets.ANDROID_OSSRH_USERNAME }} - # ANDROID_OSSRH_PASSWORD: ${{ secrets.ANDROID_OSSRH_PASSWORD }} - # ANDROID_SIGNING_KEY_ID: ${{ secrets.ANDROID_SIGNING_KEY_ID }} - # ANDROID_SIGNING_PASSWORD: ${{ secrets.ANDROID_SIGNING_PASSWORD }} - # ANDROID_SIGNING_KEY: ${{ secrets.ANDROID_SIGNING_KEY }} - # ANDROID_SONATYPE_STAGING_PROFILE_ID: ${{ secrets.ANDROID_SONATYPE_STAGING_PROFILE_ID }} run: ./publish-android.sh \ No newline at end of file From 1a71c10fd92e7872ce431c44983c09dc183172bb Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto <alexandre.jacinto@outsystems.com> Date: Thu, 9 Jan 2025 14:15:00 +0000 Subject: [PATCH 39/40] chore: uncomment line to actually publish library to Maven repo References: https://outsystemsrd.atlassian.net/browse/RMET-3975 --- .github/workflows/publish-android.yml | 6 +----- scripts/publish-android.sh | 4 ++-- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/.github/workflows/publish-android.yml b/.github/workflows/publish-android.yml index c9a5cd2..c5dd721 100644 --- a/.github/workflows/publish-android.yml +++ b/.github/workflows/publish-android.yml @@ -1,10 +1,6 @@ name: Publish Native Android Library -#on: workflow_dispatch -on: - workflow_dispatch: - push: - branches: [ feat/RMET-3975/setup-pipelines ] +on: workflow_dispatch jobs: publish-android: diff --git a/scripts/publish-android.sh b/scripts/publish-android.sh index 0e5c9c4..562060a 100755 --- a/scripts/publish-android.sh +++ b/scripts/publish-android.sh @@ -21,9 +21,9 @@ else printf %"s\n" "Attempting to build and publish version $THE_VERSION" # Publish a release to the Maven repo - # "$ANDROID_PATH"/gradlew clean build publishReleasePublicationToSonatypeRepository closeAndReleaseSonatypeStagingRepository --no-daemon --max-workers 1 -b "$ANDROID_PATH"/build.gradle -Pandroid.useAndroidX=true > $LOG_OUTPUT 2>&1 + "$ANDROID_PATH"/gradlew clean build publishReleasePublicationToSonatypeRepository closeAndReleaseSonatypeStagingRepository --no-daemon --max-workers 1 -b "$ANDROID_PATH"/build.gradle -Pandroid.useAndroidX=true > $LOG_OUTPUT 2>&1 # Stage a version - "$ANDROID_PATH"/gradlew clean build publishReleasePublicationToSonatypeRepository --no-daemon --max-workers 1 -b "$ANDROID_PATH"/build.gradle -Pandroid.useAndroidX=true > $LOG_OUTPUT 2>&1 + # "$ANDROID_PATH"/gradlew clean build publishReleasePublicationToSonatypeRepository --no-daemon --max-workers 1 -b "$ANDROID_PATH"/build.gradle -Pandroid.useAndroidX=true > $LOG_OUTPUT 2>&1 echo $RESULT From a557211975f1016b8ca4d6a8359d66e4ec49470e Mon Sep 17 00:00:00 2001 From: Alexandre Jacinto <alexandre.jacinto@outsystems.com> Date: Thu, 9 Jan 2025 14:29:56 +0000 Subject: [PATCH 40/40] chore: add more info to README.md file --- README.md | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 20f7d95..b0e6684 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,10 @@ The `OSGLOCController` class provides the main features of the Library, which ar - [Obtain the current location of the device](#obtain-the-current-location-of-the-device) - [Add a watch for periodic location updates](#add-a-watch-for-periodic-location-updates) - [Clear a watch that was added previously](#clear-a-watch-that-was-added-previously) +- [Troubleshooting](#troubleshooting) +- [Contributing](#contributing) +- [License](#license) +- [Support](#support) ## Motivation @@ -75,4 +79,34 @@ fun clearWatch(id: String): Boolean The method is composed of the following input parameters: - **id**: the `watchId` identigying the watch to remove. -The method returns a Boolean indicating if the watch was cleared or not (in case the watch isn't found). \ No newline at end of file +The method returns a Boolean indicating if the watch was cleared or not (in case the watch isn't found). + +## Troubleshooting + +Common issues and solutions: + +1. Location updates not received + - Check that location permission is allowed on the device + - Verify location services are enabled on the device + - Ensure the necessary permissions are included in `AndroidManifest.xml` + +2. Poor accuracy + - Enable high accuracy mode + - Ensure clear sky view + - Wait for better GPS signal + +## Contributing + +1. Fork the repository +2. Create your feature branch (`git checkout -b feature/amazing-feature`) +3. Commit your changes (`git commit -m 'Add amazing feature'`) +4. Push to the branch (`git push origin feature/amazing-feature`) +5. Open a Pull Request + +## License + +`OSGeolocationLib` is available under the MIT license. See the [LICENSE](LICENSE) file for more info. + +## Support + +- Report issues on our [Issue Tracker](https://github.com/ionic-team/OSGeolocationLib-Android/issues) \ No newline at end of file