Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f4f5089d7f | ||
|
|
34916e4ca0 | ||
|
|
b1c86f2142 | ||
|
|
4e30fa0a40 |
41
CHANGELOG.md
41
CHANGELOG.md
@@ -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)
|
## [2.3.3](https://github.com/leinelissen/jellyfin-audio-player/compare/v2.3.2...v2.3.3) (2024-06-15)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -85,8 +85,8 @@ android {
|
|||||||
applicationId "nl.moeilijkedingen.jellyfinaudioplayer"
|
applicationId "nl.moeilijkedingen.jellyfinaudioplayer"
|
||||||
minSdkVersion rootProject.ext.minSdkVersion
|
minSdkVersion rootProject.ext.minSdkVersion
|
||||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||||
versionCode 30
|
versionCode 31
|
||||||
versionName "2.4.0"
|
versionName "2.4.1"
|
||||||
}
|
}
|
||||||
|
|
||||||
signingConfigs {
|
signingConfigs {
|
||||||
|
|||||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "fintunes",
|
"name": "fintunes",
|
||||||
"version": "2.4.0",
|
"version": "2.4.1",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "fintunes",
|
"name": "fintunes",
|
||||||
"version": "2.4.0",
|
"version": "2.4.1",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@react-native-async-storage/async-storage": "^1.21.0",
|
"@react-native-async-storage/async-storage": "^1.21.0",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "fintunes",
|
"name": "fintunes",
|
||||||
"version": "2.4.0",
|
"version": "2.4.1",
|
||||||
"main": "src/index.js",
|
"main": "src/index.js",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
13
patches/@shopify+react-native-skia+0.1.238.patch
Normal file
13
patches/@shopify+react-native-skia+0.1.238.patch
Normal 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"
|
||||||
|
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
import { configureStore, combineReducers } from '@reduxjs/toolkit';
|
import { configureStore, combineReducers } from '@reduxjs/toolkit';
|
||||||
import { useSelector, TypedUseSelectorHook, useDispatch } from 'react-redux';
|
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 { persistStore, persistReducer, PersistConfig, createMigrate, PersistState } from 'redux-persist';
|
||||||
import autoMergeLevel2 from 'redux-persist/es/stateReconciler/autoMergeLevel2';
|
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 downloads, { initialState as downloadsInitialState } from './downloads';
|
||||||
import sleepTimer from './sleep-timer';
|
import sleepTimer from './sleep-timer';
|
||||||
import { ColorScheme } from './settings/types';
|
import { ColorScheme } from './settings/types';
|
||||||
|
import MigratedStorage from '@/utility/MigratedStorage';
|
||||||
|
|
||||||
const persistConfig: PersistConfig<Omit<AppState, '_persist'>> = {
|
const persistConfig: PersistConfig<Omit<AppState, '_persist'>> = {
|
||||||
key: 'root',
|
key: 'root',
|
||||||
storage: AsyncStorage,
|
storage: MigratedStorage,
|
||||||
version: 2,
|
version: 2,
|
||||||
stateReconciler: autoMergeLevel2,
|
stateReconciler: autoMergeLevel2,
|
||||||
migrate: createMigrate({
|
migrate: createMigrate({
|
||||||
@@ -80,7 +80,7 @@ const persistConfig: PersistConfig<Omit<AppState, '_persist'>> = {
|
|||||||
credentials,
|
credentials,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
},
|
||||||
})
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
51
src/utility/MigratedStorage.ts
Normal file
51
src/utility/MigratedStorage.ts
Normal 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;
|
||||||
Reference in New Issue
Block a user