Compare commits
5 Commits
v125010241
...
80293a2248
| Author | SHA1 | Date | |
|---|---|---|---|
| 80293a2248 | |||
| 474b12120e | |||
| 6b96eb358d | |||
| dfc1bf9fa3 | |||
|
|
b173664ff0 |
138
.gitea/workflows/on_merge_on_release-test.yml
Normal file
138
.gitea/workflows/on_merge_on_release-test.yml
Normal file
@@ -0,0 +1,138 @@
|
|||||||
|
name: Create tag
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- test-releas
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
# build:
|
||||||
|
# uses: ./.gitea/workflows/common_build.yml
|
||||||
|
createTagAndChangelog:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: build
|
||||||
|
steps:
|
||||||
|
- name: Check out repository code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
- name: Config git
|
||||||
|
run: |
|
||||||
|
git config --global user.email aminecmi+giteadrone@pm.me
|
||||||
|
git config --global user.name giteadrone
|
||||||
|
- name: Creating the tag and generate changelog
|
||||||
|
run: |
|
||||||
|
# git fetch --tags -p
|
||||||
|
# PREV=$(git describe --tags --abbrev=0)
|
||||||
|
# ./build.sh --publish --from-ci
|
||||||
|
# VER=$(git describe --tags --abbrev=0)
|
||||||
|
# CHANGELOG=$(git log $PREV..HEAD --pretty="- %s")
|
||||||
|
# echo "**$VER
|
||||||
|
#
|
||||||
|
# $CHANGELOG
|
||||||
|
echo "AAAAAAAAAAA
|
||||||
|
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
|
||||||
|
$(cat CHANGELOG.md)" > CHANGELOG.md
|
||||||
|
git add CHANGELOG.md
|
||||||
|
# touch ./fastlane/metadata/android/en\-US/changelogs/$VER.txt
|
||||||
|
# echo "**$VER**
|
||||||
|
|
||||||
|
# $CHANGELOG" > ./fastlane/metadata/android/en\-US/changelogs/$VER.txt
|
||||||
|
# git add ./fastlane/metadata/android/en\-US/changelogs/$VER.txt
|
||||||
|
git commit -m "Changelog for $VER"
|
||||||
|
git checkout master
|
||||||
|
git merge release
|
||||||
|
- name: Check out repository code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
ref: master
|
||||||
|
- name: Merge master in release
|
||||||
|
run: |
|
||||||
|
git merge release
|
||||||
|
- name: Push changes
|
||||||
|
uses: appleboy/git-push-action@v1.0.0
|
||||||
|
with:
|
||||||
|
author_name: giteadrone
|
||||||
|
author_email: aminecmi+giteadrone@pm.me
|
||||||
|
remote: ${{ secrets.REMOTE_URL }}
|
||||||
|
followtags: true
|
||||||
|
ssh_key: ${{ secrets.PRIVATE_KEY }}
|
||||||
|
tags: true
|
||||||
|
branch: master
|
||||||
|
# - name: copy file via ssh password
|
||||||
|
# uses: appleboy/scp-action@v0.1.7
|
||||||
|
# with:
|
||||||
|
# host: amine-bouabdallaoui.fr
|
||||||
|
# username: ubuntu
|
||||||
|
# key: ${{ secrets.PRIVATE_KEY }}
|
||||||
|
# source: "version.txt"
|
||||||
|
# target: "/home/ubuntu/"
|
||||||
|
# - name: deploy version file
|
||||||
|
# uses: appleboy/ssh-action@v1.2.0
|
||||||
|
# with:
|
||||||
|
# host: amine-bouabdallaoui.fr
|
||||||
|
# username: ubuntu
|
||||||
|
# key: ${{ secrets.PRIVATE_KEY }}
|
||||||
|
# script: cd /home/ubuntu && sudo rm -rf /var/www/amine/version.txt && sudo chown www-data:www-data ./version.txt && sudo mv version.txt /var/www/amine/
|
||||||
|
# release:
|
||||||
|
# runs-on: ubuntu-latest
|
||||||
|
# needs: createTagAndChangelog
|
||||||
|
# steps:
|
||||||
|
# - name: Check out repository code
|
||||||
|
# uses: actions/checkout@v4
|
||||||
|
# with:
|
||||||
|
# fetch-depth: 0
|
||||||
|
# - name: Fetch tags
|
||||||
|
# id: version
|
||||||
|
# run: |
|
||||||
|
# git fetch --tags -p
|
||||||
|
# PREV=$(git describe --tags --abbrev=0)
|
||||||
|
# echo $PREV
|
||||||
|
# echo "VERSION=$PREV" >> $GITHUB_OUTPUT
|
||||||
|
# - uses: actions/setup-java@v4
|
||||||
|
# with:
|
||||||
|
# distribution: 'temurin'
|
||||||
|
# java-version: '17'
|
||||||
|
# cache: gradle
|
||||||
|
# - name: Setup Android SDK
|
||||||
|
# uses: android-actions/setup-android@v3
|
||||||
|
# - name: Configure gradle...
|
||||||
|
# run: mkdir -p ~/.gradle && echo "org.gradle.daemon=false\nignoreGitVersion=false\nsystemProp.org.gradle.internal.http.connectionTimeout=180000\nsystemProp.org.gradle.internal.http.socketTimeout=180000" >> ~/.gradle/gradle.properties
|
||||||
|
# - name: setup go
|
||||||
|
# uses: https://github.com/actions/setup-go@v4
|
||||||
|
# with:
|
||||||
|
# go-version: '>=1.20.1'
|
||||||
|
# - name: Generate APK
|
||||||
|
# run: ./gradlew :androidApp:assembleGithubConfigRelease
|
||||||
|
# - name: Get Key
|
||||||
|
# run: wget ${{ secrets.KEY_URL }}
|
||||||
|
# - name: Zippalign
|
||||||
|
# run: |
|
||||||
|
# sdkmanager "build-tools;31.0.0"
|
||||||
|
# ls $ANDROID_HOME/build-tools
|
||||||
|
# $ANDROID_HOME/build-tools/31.0.0/zipalign -f -v 4 androidApp/build/outputs/apk/githubConfig/release/androidApp-githubConfig-release-unsigned.apk androidApp/build/outputs/apk/githubConfig/release/android-prod-released-ziped.apk
|
||||||
|
# - name: Sigh
|
||||||
|
# run: $ANDROID_HOME/build-tools/31.0.0/apksigner sign -v --out signed.apk --ks ./key --ks-key-alias ${{ secrets.KEY_ALIAS }} --ks-pass pass:${{ secrets.KEYSTORE_PASSWORD }} --v1-signing-enabled true --v2-signing-enabled true androidApp/build/outputs/apk/githubConfig/release/android-prod-released-ziped.apk
|
||||||
|
# - name: Verify
|
||||||
|
# run: $ANDROID_HOME/build-tools/31.0.0/apksigner verify signed.apk
|
||||||
|
# - name: Release
|
||||||
|
# uses: https://gitea.com/actions/gitea-release-action@main
|
||||||
|
# with:
|
||||||
|
# files: signed.apk
|
||||||
|
# token: ${{ secrets.API_KEY }}
|
||||||
|
# tag_name: ${{ steps.version.outputs.VERSION }}
|
||||||
|
# name: ${{ steps.version.outputs.VERSION }}
|
||||||
|
# - name: Send mail
|
||||||
|
# uses: https://github.com/dawidd6/action-send-mail@v4
|
||||||
|
# with:
|
||||||
|
# connection_url: ${{ secrets.MAIL_CONNECTION }}
|
||||||
|
# to: ${{ secrets.MAIL_TO }}
|
||||||
|
# from: ${{ secrets.MAIL_FROM }}
|
||||||
|
# subject: Mapping file
|
||||||
|
# priority: high
|
||||||
|
# convert_markdown: true
|
||||||
|
# body: Nouveau fichier de mapping pour la version ${{ steps.version.outputs.VERSION }}
|
||||||
|
# attachments: androidApp/build/outputs/mapping/githubConfigRelease/mapping.txt
|
||||||
11
CHANGELOG.md
11
CHANGELOG.md
@@ -1,3 +1,14 @@
|
|||||||
|
**v125010241
|
||||||
|
|
||||||
|
- Merge pull request 'fix: Link not opening.' (#178) from fix-open-link into master
|
||||||
|
- refactor: context fragments issues.
|
||||||
|
- logs: Context issues.
|
||||||
|
- fix: Handle empty url issue, again.
|
||||||
|
- fix: Link not opening.
|
||||||
|
- Changelog for v125010201
|
||||||
|
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
|
||||||
**v125010201
|
**v125010201
|
||||||
|
|
||||||
- fix: Handle empty url issue.
|
- fix: Handle empty url issue.
|
||||||
|
|||||||
@@ -193,41 +193,39 @@ class ArticleFragment :
|
|||||||
fab.mainFabClosedIconColor = colorOnSurface
|
fab.mainFabClosedIconColor = colorOnSurface
|
||||||
fab.mainFabOpenedIconColor = colorOnSurface
|
fab.mainFabOpenedIconColor = colorOnSurface
|
||||||
|
|
||||||
maybeIfContext { context -> handleFloatingToolbarActionItems(context) }
|
maybeIfContext { handleFloatingToolbarActionItems(it) }
|
||||||
|
|
||||||
fab.setOnActionSelectedListener { actionItem ->
|
fab.setOnActionSelectedListener { actionItem ->
|
||||||
when (actionItem.id) {
|
when (actionItem.id) {
|
||||||
R.id.share_action -> requireActivity().shareLink(url, contentTitle)
|
R.id.share_action -> requireActivity().shareLink(url, contentTitle)
|
||||||
R.id.open_action -> requireActivity().openItemUrlInBrowserAsNewTask(this@ArticleFragment.item)
|
R.id.open_action -> requireActivity().openItemUrlInBrowserAsNewTask(this@ArticleFragment.item)
|
||||||
R.id.unread_action ->
|
R.id.unread_action ->
|
||||||
try {
|
if (this@ArticleFragment.item.unread) {
|
||||||
if (this@ArticleFragment.item.unread) {
|
CoroutineScope(Dispatchers.IO).launch {
|
||||||
CoroutineScope(Dispatchers.IO).launch {
|
repository.markAsRead(this@ArticleFragment.item)
|
||||||
repository.markAsRead(this@ArticleFragment.item)
|
}
|
||||||
}
|
this@ArticleFragment.item.unread = false
|
||||||
this@ArticleFragment.item.unread = false
|
maybeIfContext {
|
||||||
maybeIfContext {
|
|
||||||
Toast
|
|
||||||
.makeText(
|
|
||||||
it,
|
|
||||||
R.string.marked_as_read,
|
|
||||||
Toast.LENGTH_LONG,
|
|
||||||
).show()
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
CoroutineScope(Dispatchers.IO).launch {
|
|
||||||
repository.unmarkAsRead(this@ArticleFragment.item)
|
|
||||||
}
|
|
||||||
this@ArticleFragment.item.unread = true
|
|
||||||
Toast
|
Toast
|
||||||
.makeText(
|
.makeText(
|
||||||
context,
|
it,
|
||||||
|
R.string.marked_as_read,
|
||||||
|
Toast.LENGTH_LONG,
|
||||||
|
).show()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
CoroutineScope(Dispatchers.IO).launch {
|
||||||
|
repository.unmarkAsRead(this@ArticleFragment.item)
|
||||||
|
}
|
||||||
|
this@ArticleFragment.item.unread = true
|
||||||
|
maybeIfContext {
|
||||||
|
Toast
|
||||||
|
.makeText(
|
||||||
|
it,
|
||||||
R.string.marked_as_unread,
|
R.string.marked_as_unread,
|
||||||
Toast.LENGTH_LONG,
|
Toast.LENGTH_LONG,
|
||||||
).show()
|
).show()
|
||||||
}
|
}
|
||||||
} catch (e: IllegalStateException) {
|
|
||||||
e.sendSilentlyWithAcraWithName("Toolbar context required is null")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> Unit
|
else -> Unit
|
||||||
@@ -313,8 +311,8 @@ class ArticleFragment :
|
|||||||
|
|
||||||
private fun handleLeadImage(leadImageUrl: String?) {
|
private fun handleLeadImage(leadImageUrl: String?) {
|
||||||
if (!leadImageUrl.isNullOrEmpty()) {
|
if (!leadImageUrl.isNullOrEmpty()) {
|
||||||
binding.imageView.visibility = View.VISIBLE
|
|
||||||
maybeIfContext {
|
maybeIfContext {
|
||||||
|
binding.imageView.visibility = View.VISIBLE
|
||||||
it.bitmapFitCenter(leadImageUrl, binding.imageView, appSettingsService)
|
it.bitmapFitCenter(leadImageUrl, binding.imageView, appSettingsService)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -397,13 +395,12 @@ class ArticleFragment :
|
|||||||
WHITE_COLOR_HEX and (if (colorOnSurface != DATA_NULL_UNDEFINED) colorOnSurface else 0),
|
WHITE_COLOR_HEX and (if (colorOnSurface != DATA_NULL_UNDEFINED) colorOnSurface else 0),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
binding.webcontent.settings.useWideViewPort = true
|
||||||
|
binding.webcontent.settings.loadWithOverviewMode = true
|
||||||
|
binding.webcontent.settings.javaScriptEnabled = false
|
||||||
|
|
||||||
|
handleImageLoading()
|
||||||
try {
|
try {
|
||||||
binding.webcontent.settings.useWideViewPort = true
|
|
||||||
binding.webcontent.settings.loadWithOverviewMode = true
|
|
||||||
binding.webcontent.settings.javaScriptEnabled = false
|
|
||||||
|
|
||||||
handleImageLoading()
|
|
||||||
|
|
||||||
val gestureDetector =
|
val gestureDetector =
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
activity,
|
activity,
|
||||||
@@ -417,49 +414,50 @@ class ArticleFragment :
|
|||||||
event,
|
event,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.webcontent.settings.layoutAlgorithm =
|
|
||||||
WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING
|
|
||||||
} catch (e: IllegalStateException) {
|
} catch (e: IllegalStateException) {
|
||||||
e.sendSilentlyWithAcraWithName("Context is null but wasn't, and that's causing issues with webview config")
|
e.sendSilentlyWithAcraWithName("Gesture detector issue ?")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
binding.webcontent.settings.layoutAlgorithm =
|
||||||
var baseUrl: String? = null
|
WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING
|
||||||
try {
|
|
||||||
val itemUrl = URL(url)
|
|
||||||
baseUrl = itemUrl.protocol + "://" + itemUrl.host
|
|
||||||
} catch (e: MalformedURLException) {
|
|
||||||
e.sendSilentlyWithAcraWithName("htmlToWebview > $url")
|
|
||||||
}
|
|
||||||
|
|
||||||
val fontName =
|
var baseUrl: String? = null
|
||||||
|
try {
|
||||||
|
val itemUrl = URL(url)
|
||||||
|
baseUrl = itemUrl.protocol + "://" + itemUrl.host
|
||||||
|
} catch (e: MalformedURLException) {
|
||||||
|
e.sendSilentlyWithAcraWithName("htmlToWebview > $url")
|
||||||
|
}
|
||||||
|
|
||||||
|
val fontName: String =
|
||||||
|
maybeIfContext {
|
||||||
when (font) {
|
when (font) {
|
||||||
getString(R.string.open_sans_font_id) -> "Open Sans"
|
it.getString(R.string.open_sans_font_id) -> "Open Sans"
|
||||||
getString(R.string.roboto_font_id) -> "Roboto"
|
it.getString(R.string.roboto_font_id) -> "Roboto"
|
||||||
getString(R.string.source_code_pro_font_id) -> "Source Code Pro"
|
it.getString(R.string.source_code_pro_font_id) -> "Source Code Pro"
|
||||||
else -> ""
|
else -> ""
|
||||||
}
|
}
|
||||||
|
}?.toString().orEmpty()
|
||||||
|
|
||||||
val fontLinkAndStyle =
|
val fontLinkAndStyle =
|
||||||
if (font.isNotEmpty()) {
|
if (fontName.isNotEmpty()) {
|
||||||
"""<link href="https://fonts.googleapis.com/css?family=${
|
"""<link href="https://fonts.googleapis.com/css?family=${
|
||||||
fontName.replace(
|
fontName.replace(
|
||||||
" ",
|
" ",
|
||||||
"+",
|
"+",
|
||||||
)
|
)
|
||||||
}" rel="stylesheet">
|
}" rel="stylesheet">
|
||||||
|<style>
|
|<style>
|
||||||
| * {
|
| * {
|
||||||
| font-family: '$fontName';
|
| font-family: '$fontName';
|
||||||
| }
|
| }
|
||||||
|</style>
|
|</style>
|
||||||
""".trimMargin()
|
""".trimMargin()
|
||||||
} else {
|
} else {
|
||||||
""
|
""
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
binding.webcontent.loadDataWithBaseURL(
|
binding.webcontent.loadDataWithBaseURL(
|
||||||
baseUrl,
|
baseUrl,
|
||||||
"""<html>
|
"""<html>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
plugins {
|
plugins {
|
||||||
//trick: for the same plugin versions in all sub-modules
|
// trick: for the same plugin versions in all sub-modules
|
||||||
id("com.android.application").version("8.7.3").apply(false)
|
id("com.android.application").version("8.8.0").apply(false)
|
||||||
id("com.android.library").version("8.7.3").apply(false)
|
id("com.android.library").version("8.8.0").apply(false)
|
||||||
id("org.jetbrains.kotlin.android").version("2.1.0").apply(false)
|
id("org.jetbrains.kotlin.android").version("2.1.0").apply(false)
|
||||||
kotlin("multiplatform").version("2.1.0").apply(false)
|
kotlin("multiplatform").version("2.1.0").apply(false)
|
||||||
id("com.mikepenz.aboutlibraries.plugin").version("10.5.1").apply(false)
|
id("com.mikepenz.aboutlibraries.plugin").version("10.5.1").apply(false)
|
||||||
@@ -16,7 +16,6 @@ allprojects {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
tasks.register("clean", Delete::class) {
|
tasks.register("clean", Delete::class) {
|
||||||
delete(layout.buildDirectory)
|
delete(layout.buildDirectory)
|
||||||
}
|
}
|
||||||
@@ -24,4 +23,4 @@ tasks.register("clean", Delete::class) {
|
|||||||
dependencies {
|
dependencies {
|
||||||
kover(project(":shared"))
|
kover(project(":shared"))
|
||||||
kover(project(":androidApp"))
|
kover(project(":androidApp"))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
**v125010241**
|
||||||
|
|
||||||
|
- Merge pull request 'fix: Link not opening.' (#178) from fix-open-link into master
|
||||||
|
- refactor: context fragments issues.
|
||||||
|
- logs: Context issues.
|
||||||
|
- fix: Handle empty url issue, again.
|
||||||
|
- fix: Link not opening.
|
||||||
|
- Changelog for v125010201
|
||||||
4
gradle/wrapper/gradle-wrapper.properties
vendored
4
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,6 +1,6 @@
|
|||||||
#Mon Nov 25 22:48:24 CET 2024
|
#Sun Feb 09 14:44:52 CET 2025
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
|||||||
Reference in New Issue
Block a user