Skip to content

Commit

Permalink
Merge 3.0.0 Release (#442)
Browse files Browse the repository at this point in the history
* Update dependencies, kotlin and setup 3.0.0 development

Signed-off-by: IacobIonut01 <paulionut2003@gmail.com>

* Introduce Vaults

Encrypt your Media in a secure folder only accessible by your credentials

The vaults and media and their info are completely encrypted and stored in the app's private folder.
The encryption is a standard AES256_GCM scheme, but customisable options are on their way (with option to backup/restore the vault)

Fixes Ability to hide photos/videos in a hidden folder within the app #232
Fixes Hidden folders[Enhancement] #402

Signed-off-by: IacobIonut01 <paulionut2003@gmail.com>

* Fix sha256 generation script

Signed-off-by: IacobIonut01 <paulionut2003@gmail.com>

* Redesign First-Launch Setup

Signed-off-by: IacobIonut01 <paulionut2003@gmail.com>

* Add Library Screen

Work in Progress, currently the only way to access Trash, Favorites and Vault.
But more features to come

Signed-off-by: IacobIonut01 <paulionut2003@gmail.com>

* Various fixes to Vault

Signed-off-by: IacobIonut01 <paulionut2003@gmail.com>

* Revert "Gallery: Improve scroll speed in media grid"

Signed-off-by: IacobIonut01 <paulionut2003@gmail.com>

* Fix sha256 generation once again

Signed-off-by: IacobIonut01 <paulionut2003@gmail.com>

* Vault: Set secure mode while viewing

Hides the gallery screen in the recents apps or in screenrecording (and screenshots) to protect users privacy to their hidden content

Signed-off-by: IacobIonut01 <paulionut2003@gmail.com>

* Various fixes to VideoPlayer

Now using sanghun's compose video player to handle the logic

Fixes [BUG] Videos are stretched or cropped #425
Fixes [BUG] Videos are stretched #420

Signed-off-by: IacobIonut01 <paulionut2003@gmail.com>

* Update subsampling library, Update coil and add avif support

Also fixes Using double tap to zoom #399

Signed-off-by: IacobIonut01 <paulionut2003@gmail.com>

* Update major dependencies

Signed-off-by: IacobIonut01 <paulionut2003@gmail.com>

* Add avif coder dependency

Signed-off-by: IacobIonut01 <paulionut2003@gmail.com>

* Cursor: Fix media not being retriven when stored in a null bucket

This happens when you want to display images stored in the root of the phone's storage (Internal Storage)

Signed-off-by: IacobIonut01 <paulionut2003@gmail.com>

* Merge changes last nightly

This is the last nightly before the 3.0.0 release
Expect bugs (do not report yet)
Might require app data clear or reinstall

The built-in image editor is currently disabled as is facing a major re-work

Includes, but not limited to:
- Settings for auto-hide search/navigation bar
- Switched from coil to sketch for image loading
- Switched from zoomable to zoomimage/sketch for image subsampling
- Reduced unecessary recompositions
- Added total 'Images & Videos' counter at the bottom of the Album screen
- Added total Album media size after counter (eg: 1011 items (628.20MB))
- Improved Album sorting UI
- Improvements to Vault (now limited to Images only)
- Improvements to Ignored Albums
* New Setup UI for creating new Ignored Albums
* Added wildcard patterns (Regex) for hiding multiple albums at once
* Added visibility option for hiding the albums (and it's medie content) either only in timeline, album screens or both
* Added more information about the created Ignored Albums
- Re-arranged Settings screen
- Updated major dependecies
- Added avif support
- Improved video player

Signed-off-by: IacobIonut01 <paulionut2003@gmail.com>

* Launch media state collecting only once, no need to be recreated on resume

Signed-off-by: IacobIonut01 <paulionut2003@gmail.com>

* Fix leaking buffers for Heif and Jxl decoders

Also reduce the image type detection to mimeType

Signed-off-by: IacobIonut01 <paulionut2003@gmail.com>

* Gallery: 3.0.0-30033 Release

Signed-off-by: IacobIonut01 <paulionut2003@gmail.com>

---------

Signed-off-by: IacobIonut01 <paulionut2003@gmail.com>
  • Loading branch information
IacobIonut01 authored Sep 1, 2024
1 parent 0779a5e commit 1eefc87
Show file tree
Hide file tree
Showing 313 changed files with 17,776 additions and 5,012 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ jobs:
- name: Remove apk release suffix
run: find . -name "Gallery-*.apk" -exec bash -c 'mv "$1" "${1//-release/}"' _ {} \;
- name: Generate SHA256
run: find . -name "Gallery-*.apk" -exec bash -c 'sha256sum "$1" | awk '{print $1}' > "${file}.sha256' _ {} \;
run: find . -name "Gallery-*.apk" -exec bash -c 'sha256sum "$1" | awk '\''{print $1}'\'' > "$1.sha256"' _ {} \;
- name: Create Release
id: create_release
uses: softprops/action-gh-release@v2
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/stable.yml
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ jobs:
- name: Remove apk release suffix
run: find . -name "Gallery-*.apk" -exec bash -c 'mv "$1" "${1//-release/}"' _ {} \;
- name: Generate SHA256
run: find . -name "Gallery-*.apk" -exec bash -c 'sha256sum "$1" | awk '{print $1}' > "${file}.sha256' _ {} \;
run: find . -name "Gallery-*.apk" -exec bash -c 'sha256sum "$1" | awk '\''{print $1}'\'' > "$1.sha256"' _ {} \;
- name: Create Release
id: create_release
uses: softprops/action-gh-release@v2
Expand Down
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,6 @@
.externalNativeBuild
.cxx
local.properties
api.properties
api.properties
/.kotlin
/.vscode
69 changes: 48 additions & 21 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.util.archivesName
import java.io.FileInputStream
import java.util.Properties

Expand All @@ -9,27 +8,29 @@ plugins {
alias(libs.plugins.roomPlugin)
alias(libs.plugins.hiltAndroid)
alias(libs.plugins.baselineProfilePlugin)
alias(libs.plugins.kotlin.compose.compiler)
id("kotlin-parcelize")
alias(libs.plugins.kotlinSerialization)
}

android {
namespace = "com.dot.gallery"
compileSdk = 34
compileSdk = 35

defaultConfig {
applicationId = "com.dot.gallery"
minSdk = 30
targetSdk = 34
versionCode = 21204
versionName = "2.1.2"
targetSdk = 35
versionCode = 30033
versionName = "3.0.0"

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
useSupportLibrary = true
}
archivesName.set("Gallery-${versionName}-$versionCode")
base.archivesName.set("Gallery-${versionName}-$versionCode")
if (getApiKey() == "\"DEBUG\"") {
archivesName.set("${archivesName.get()}-nomaps")
base.archivesName.set("${base.archivesName.get()}-nomaps")
}
}

Expand Down Expand Up @@ -95,15 +96,15 @@ android {
}
kotlinOptions {
jvmTarget = "17"
freeCompilerArgs += listOf("-P", "plugin:androidx.compose.compiler.plugins.kotlin:experimentalStrongSkipping=true")
freeCompilerArgs += "-Xcontext-receivers"
}
buildFeatures {
compose = true
buildConfig = true
}
composeOptions {
kotlinCompilerExtensionVersion = libs.versions.composeCompiler.get()
composeCompiler {
enableStrongSkippingMode = true
includeSourceInformation = true
}
packaging {
resources {
Expand Down Expand Up @@ -131,17 +132,20 @@ dependencies {

// Compose
implementation(libs.compose.activity)
implementation(platform(libs.compose.bom))
implementation(libs.compose.ui)
implementation(libs.compose.ui.graphics)
implementation(libs.compose.ui.tooling.preview)
implementation(libs.compose.material.icons.extended)
implementation(libs.androidx.graphics.shapes)

// Compose - Shimmer
implementation(libs.compose.shimmer)
// Compose - Material3
implementation(libs.compose.material3)
implementation(libs.compose.material3.window.size)
implementation(libs.androidx.adaptive)
implementation(libs.androidx.adaptive.layout)
implementation(libs.androidx.adaptive.navigation)

// Compose - Accompanists
implementation(libs.accompanist.permissions)
Expand All @@ -155,9 +159,13 @@ dependencies {
implementation(libs.kotlinx.coroutines.core)
runtimeOnly(libs.kotlinx.coroutines.android)

implementation(libs.kotlinx.serialization.json)

// Dagger - Hilt
implementation(libs.androidx.hilt.navigation.compose)
implementation(libs.dagger.hilt)
implementation(libs.androidx.hilt.common)
implementation(libs.androidx.hilt.work)
ksp(libs.dagger.hilt.compiler)
ksp(libs.androidx.hilt.compiler)

Expand All @@ -169,23 +177,29 @@ dependencies {
implementation(libs.room.ktx)

// Coil
implementation(libs.coil.compose)
implementation(libs.coil.svg)
implementation(libs.coil.gif)
implementation(libs.coil.video)
implementation(libs.jxl.coder.coil)
implementation(libs.coil.network.okhttp)
implementation(libs.avif.coder.coil)

// Sketch
implementation(libs.sketch.compose)
implementation(libs.sketch.view)
implementation(libs.sketch.animated)
implementation(libs.sketch.extensions.compose)
implementation(libs.sketch.http.ktor)
implementation(libs.sketch.svg)
implementation(libs.sketch.video)

// Exo Player
implementation(libs.androidx.media3.exoplayer)
implementation(libs.androidx.media3.ui)
implementation(libs.androidx.media3.session)
implementation(libs.androidx.media3.exoplayer.dash)
implementation(libs.androidx.media3.exoplayer.hls)
implementation(libs.compose.video)

// Exif Interface
implementation(libs.androidx.exifinterface)

// Zoomable
implementation(libs.zoomable)

// Datastore Preferences
implementation(libs.datastore.prefs)

Expand All @@ -199,15 +213,28 @@ dependencies {
implementation(libs.pinchzoomgrid)

// Subsampling
implementation(libs.zoomable.image.coil)
implementation(libs.zoomimage.sketch)

// Splashscreen
implementation(libs.androidx.core.splashscreen)

// Jetpack Security
implementation(libs.androidx.security.crypto)
implementation(libs.androidx.biometric)

// Composables - Core
implementation(libs.core)

// Worker
implementation(libs.androidx.work.runtime.ktx)

// Composable - Scrollbar
implementation(libs.lazycolumnscrollbar)


// Tests
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.test.ext.junit)
androidTestImplementation(platform(libs.compose.bom))
debugImplementation(libs.compose.ui.tooling)
debugRuntimeOnly(libs.compose.ui.test.manifest)
}
Expand Down
20 changes: 20 additions & 0 deletions app/compose_compiler_config.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
com.github.panpf.sketch.Sketch
com.github.panpf.sketch.PlatformContext
com.github.panpf.sketch.drawable.DrawableEqualizer
com.github.panpf.sketch.request.Image
com.github.panpf.sketch.request.ImageOptions
com.github.panpf.sketch.request.ImageRequest
com.github.panpf.sketch.request.ImageResult
com.github.panpf.sketch.state.ColorDrawableStateImage
com.github.panpf.sketch.state.CurrentStateImage
com.github.panpf.sketch.state.DrawableStateImage
com.github.panpf.sketch.state.ErrorStateImage
com.github.panpf.sketch.state.MemoryCacheStateImage
com.github.panpf.sketch.state.IconAnimatableStateImage
com.github.panpf.sketch.state.IconStateImage
com.github.panpf.sketch.state.StateImage
com.github.panpf.sketch.state.ThumbnailMemoryCacheStateImage
com.github.panpf.sketch.util.ColorFetcher
com.github.panpf.sketch.util.Equalizer
com.github.panpf.sketch.util.IntColor
com.github.panpf.sketch.util.Size
3 changes: 2 additions & 1 deletion app/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,5 @@

-dontwarn org.bouncycastle.jsse.**
-dontwarn org.conscrypt.**
-dontwarn org.openjsse.**
-dontwarn org.openjsse.**
-dontwarn org.slf4j.impl.StaticLoggerBinder
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
{
"formatVersion": 1,
"database": {
"version": 3,
"identityHash": "b923fda23747db68de4db23fb2360ff8",
"entities": [
{
"tableName": "pinned_table",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER NOT NULL, PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"id"
]
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "blacklist",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER NOT NULL, `label` TEXT NOT NULL, `wildcard` TEXT, `location` INTEGER NOT NULL DEFAULT 0, `matchedAlbums` TEXT NOT NULL DEFAULT '[]', PRIMARY KEY(`id`))",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "label",
"columnName": "label",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "wildcard",
"columnName": "wildcard",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "location",
"columnName": "location",
"affinity": "INTEGER",
"notNull": true,
"defaultValue": "0"
},
{
"fieldPath": "matchedAlbums",
"columnName": "matchedAlbums",
"affinity": "TEXT",
"notNull": true,
"defaultValue": "'[]'"
}
],
"primaryKey": {
"autoGenerate": false,
"columnNames": [
"id"
]
},
"indices": [],
"foreignKeys": []
}
],
"views": [],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'b923fda23747db68de4db23fb2360ff8')"
]
}
}
Loading

0 comments on commit 1eefc87

Please sign in to comment.