Compare commits

...

4 Commits

Author SHA1 Message Date
Lei Nelissen
f4f5089d7f chore: bump android version 2025-01-27 23:39:33 +01:00
Lei Nelissen
34916e4ca0 fix: force react-native-skia to adhere to ndk version 2025-01-27 23:35:06 +01:00
Lei Nelissen
b1c86f2142 fix: save store file to filesystem
AsyncStorage can only save 2MB on Android. This might not be enough for large libraries. Hence, we'll save the file to disk, where space is (virtually) unlimited
2025-01-27 17:21:44 +01:00
Lei Nelissen
4e30fa0a40 chore: update changelog 2025-01-27 17:20:51 +01:00
7 changed files with 113 additions and 8 deletions

View File

@@ -1,3 +1,44 @@
## [2.4.1](https://github.com/leinelissen/jellyfin-audio-player/compare/v2.4.0...v2.4.1) (2025-01-27)
# [2.4.0](https://github.com/leinelissen/jellyfin-audio-player/compare/v2.3.3...v2.4.0) (2025-01-26)
### Bug Fixes
* accept any valid mime type for downloadable tracks ([2c42a89](https://github.com/leinelissen/jellyfin-audio-player/commit/2c42a897d9e77ba8f767896512b80c8c10a72e30))
* align all album titles in track list view ([7cdd01e](https://github.com/leinelissen/jellyfin-audio-player/commit/7cdd01e71378fded86411b8dc79c9748c315be96)), closes [#172](https://github.com/leinelissen/jellyfin-audio-player/issues/172)
* bump blur-view ([8bef5c6](https://github.com/leinelissen/jellyfin-audio-player/commit/8bef5c66e3242c1ad359eb3a96ef3177031cd22f))
* clean up lyrics implementation ([2f1b9c1](https://github.com/leinelissen/jellyfin-audio-player/commit/2f1b9c180d205228768d0d82b13e9f6e51944928))
* dark mode inconsistencies ([a64f52c](https://github.com/leinelissen/jellyfin-audio-player/commit/a64f52c4f913f92d8caeea74188d1260ff7c2ce5)), closes [#226](https://github.com/leinelissen/jellyfin-audio-player/issues/226) [#198](https://github.com/leinelissen/jellyfin-audio-player/issues/198)
* don't attempt to parse playback reporting responses ([746c96d](https://github.com/leinelissen/jellyfin-audio-player/commit/746c96d45932f3a23122ada165acc49e8053da11))
* ensure all cover images load properly ([b9e8a94](https://github.com/leinelissen/jellyfin-audio-player/commit/b9e8a94c7a4682076c05c4562b8996e47e84311f))
* fine-tune default orderings ([38ce998](https://github.com/leinelissen/jellyfin-audio-player/commit/38ce9986e590392667fae7c8119aa1057e95cd23)), closes [#229](https://github.com/leinelissen/jellyfin-audio-player/issues/229)
* further limit extraneous events from playback reporting ([c9f7f71](https://github.com/leinelissen/jellyfin-audio-player/commit/c9f7f71194105944f051e7329b88956e4c863976))
* make progress bars initialise out of view ([0b13e69](https://github.com/leinelissen/jellyfin-audio-player/commit/0b13e69854a361a67bcc67baaf22c9364a53378f))
* missing background on track pop-up menu ([f2cac91](https://github.com/leinelissen/jellyfin-audio-player/commit/f2cac91e2f08db7945a88e9ad29daa797ab96edd))
* missing cover images in now playing view ([96a1180](https://github.com/leinelissen/jellyfin-audio-player/commit/96a11804ba390dc665282f1fc49e7f0fb710e642)), closes [#245](https://github.com/leinelissen/jellyfin-audio-player/issues/245) [#209](https://github.com/leinelissen/jellyfin-audio-player/issues/209)
* missing image covers for emby ([01e25a8](https://github.com/leinelissen/jellyfin-audio-player/commit/01e25a89b1adcbacd7a58642d4d4ef8731480d8c))
* more accurately return current track ([9462a3e](https://github.com/leinelissen/jellyfin-audio-player/commit/9462a3e294bffc46f25797688aefec2a43f7cccb))
* prevent error on lyrics screen when tab height is unavailable ([b9a6c66](https://github.com/leinelissen/jellyfin-audio-player/commit/b9a6c66584b215e3ee86d1808864a04aa26065c9))
* properly pre-insert queued tracks before played track ([3993401](https://github.com/leinelissen/jellyfin-audio-player/commit/399340127dd4026881397a269381aaca72c07751))
* retrieve codec metadata and lyrics asynchronously ([77db5a5](https://github.com/leinelissen/jellyfin-audio-player/commit/77db5a51d2e2ba5ecd37439588dd83dcf2437b1c))
* send last position for `Stopped` event ([68c8808](https://github.com/leinelissen/jellyfin-audio-player/commit/68c88081885bb3bda196dfe71b684e21e678787e))
* show past lyrics in grey ([b03d449](https://github.com/leinelissen/jellyfin-audio-player/commit/b03d449a1bd5d16e16f15dbb215a75cfd2e0cc7c))
* support audio/ogg in downloads ([1972f48](https://github.com/leinelissen/jellyfin-audio-player/commit/1972f489aaed4780c74733532e3597dbb54a5536))
### Features
* also store cover images for downloaded tracks ([6316814](https://github.com/leinelissen/jellyfin-audio-player/commit/6316814eba59ed2bd2c0fe1a23ed64bfe2f1bed3))
* Emby support ([#234](https://github.com/leinelissen/jellyfin-audio-player/issues/234)) ([a6452f0](https://github.com/leinelissen/jellyfin-audio-player/commit/a6452f0a5e81b2f70ecdd7900138ef1a8ecb5554))
* enable playlists for emby ([f90e9be](https://github.com/leinelissen/jellyfin-audio-player/commit/f90e9be3783363bd65b4c8b7c15964338b19dc38)), closes [#242](https://github.com/leinelissen/jellyfin-audio-player/issues/242)
* Media stream info in now playing modal ([#233](https://github.com/leinelissen/jellyfin-audio-player/issues/233)) ([0d09c6f](https://github.com/leinelissen/jellyfin-audio-player/commit/0d09c6f0b8a5fc218af1182324a73cb667eccbce))
* separate discs in album view when multiple are available ([ec4a2b6](https://github.com/leinelissen/jellyfin-audio-player/commit/ec4a2b6831fb8aa3c5e8f1fc658c235ced59cfd9)), closes [#179](https://github.com/leinelissen/jellyfin-audio-player/issues/179)
## [2.3.3](https://github.com/leinelissen/jellyfin-audio-player/compare/v2.3.2...v2.3.3) (2024-06-15)

View File

@@ -85,8 +85,8 @@ android {
applicationId "nl.moeilijkedingen.jellyfinaudioplayer"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 30
versionName "2.4.0"
versionCode 31
versionName "2.4.1"
}
signingConfigs {

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "fintunes",
"version": "2.4.0",
"version": "2.4.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "fintunes",
"version": "2.4.0",
"version": "2.4.1",
"hasInstallScript": true,
"dependencies": {
"@react-native-async-storage/async-storage": "^1.21.0",

View File

@@ -1,6 +1,6 @@
{
"name": "fintunes",
"version": "2.4.0",
"version": "2.4.1",
"main": "src/index.js",
"private": true,
"scripts": {

View File

@@ -0,0 +1,13 @@
diff --git a/node_modules/@shopify/react-native-skia/android/build.gradle b/node_modules/@shopify/react-native-skia/android/build.gradle
index 29e74bf..f2b35a5 100644
--- a/node_modules/@shopify/react-native-skia/android/build.gradle
+++ b/node_modules/@shopify/react-native-skia/android/build.gradle
@@ -135,6 +135,8 @@ android {
defaultConfig {
minSdkVersion safeExtGet('minSdkVersion', DEFAULT_MIN_SDK_VERSION)
targetSdkVersion safeExtGet('targetSdkVersion', DEFAULT_TARGET_SDK_VERSION)
+ ndkVersion safeExtGet('ndkVersion', '26.1.10909125')
+
versionCode 1
versionName "1.0"

View File

@@ -1,6 +1,5 @@
import { configureStore, combineReducers } from '@reduxjs/toolkit';
import { useSelector, TypedUseSelectorHook, useDispatch } from 'react-redux';
import AsyncStorage from '@react-native-async-storage/async-storage';
import { persistStore, persistReducer, PersistConfig, createMigrate, PersistState } from 'redux-persist';
import autoMergeLevel2 from 'redux-persist/es/stateReconciler/autoMergeLevel2';
@@ -9,10 +8,11 @@ import music, { initialState as musicInitialState } from './music';
import downloads, { initialState as downloadsInitialState } from './downloads';
import sleepTimer from './sleep-timer';
import { ColorScheme } from './settings/types';
import MigratedStorage from '@/utility/MigratedStorage';
const persistConfig: PersistConfig<Omit<AppState, '_persist'>> = {
key: 'root',
storage: AsyncStorage,
storage: MigratedStorage,
version: 2,
stateReconciler: autoMergeLevel2,
migrate: createMigrate({
@@ -80,7 +80,7 @@ const persistConfig: PersistConfig<Omit<AppState, '_persist'>> = {
credentials,
},
};
}
},
})
};

View File

@@ -0,0 +1,51 @@
import AsyncStorage from '@react-native-async-storage/async-storage';
import { DocumentDirectoryPath, exists, readFile, writeFile, unlink, mkdir } from 'react-native-fs';
import { Storage } from 'redux-persist';
const STORAGE_BASE_PATH = DocumentDirectoryPath + '/store/';
/** Retrieve the path of a store file for a given key */
function getFileByKey(key: string) {
return STORAGE_BASE_PATH + encodeURIComponent(key) + '.json';
}
/** Ensure that the store directory exists on the local filesystem */
async function ensureDirectoryExists() {
if (!(await exists(STORAGE_BASE_PATH))) {
await mkdir(STORAGE_BASE_PATH);
}
}
/**
* Migrates the Redux store from AsyncStorage to react-native-fs.
*/
const MigratedStorage: Storage = {
async getItem(key) {
const path = getFileByKey(key);
// GUARD: Check whether a store already exists on the filesystem
if (await exists(path)) {
// In which case, we'll read it from disk
return readFile(path);
} else {
// If not, attempt to read the previous store from AsyncStorage
const oldStore = await AsyncStorage.getItem(key);
// GUARD: If it exists, migrate it to a file on the filesystem
if (oldStore) {
await ensureDirectoryExists();
await writeFile(path, oldStore);
return oldStore;
}
}
},
removeItem(key) {
return unlink(getFileByKey(key));
},
async setItem(key, value) {
await ensureDirectoryExists();
return writeFile(getFileByKey(key), value);
},
};
export default MigratedStorage;