Compare commits
32 Commits
v1.31.0_49
...
v1.31.1_49
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2f5cc3059a | ||
|
|
4355485581 | ||
|
|
342c3254cb | ||
|
|
5fc82dfaa2 | ||
|
|
9bfacaa39a | ||
|
|
a2882a4908 | ||
|
|
1adc64a352 | ||
|
|
c28863966b | ||
|
|
14dc679332 | ||
|
|
17085dd8a0 | ||
|
|
82b8313da0 | ||
|
|
4f7e764fa0 | ||
|
|
d52da8bbea | ||
|
|
cdddcad784 | ||
|
|
38767cad0f | ||
|
|
c3d7dda61f | ||
|
|
c4e32ce159 | ||
|
|
6355a07dc4 | ||
|
|
0e3fb41e73 | ||
|
|
fdac5af5ee | ||
|
|
0e509ceafa | ||
|
|
fc255b558d | ||
|
|
9e54e30011 | ||
|
|
77312ce2e0 | ||
|
|
9a6d29d6e7 | ||
|
|
2cb7517f64 | ||
|
|
3228882fc0 | ||
|
|
6804e3dc73 | ||
|
|
f9af61a5ca | ||
|
|
a94b443f13 | ||
|
|
fd06aa2135 | ||
|
|
dd0f40559d |
83
.github/workflows/openapi-generator.yml
vendored
Normal file
83
.github/workflows/openapi-generator.yml
vendored
Normal file
@@ -0,0 +1,83 @@
|
|||||||
|
name: Generate OpenAPI SDK
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
push:
|
||||||
|
branches: [main]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
generate-typescript-axios:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
name: OpenAPI Generator
|
||||||
|
steps:
|
||||||
|
# Checkout your code
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.GH_TOKEN }}
|
||||||
|
|
||||||
|
# Use the action to generate a client package
|
||||||
|
# This uses the default path for the openapi document and thus assumes there is an openapi.json in the current workspace.
|
||||||
|
- name: Generate Typescript Axios Client
|
||||||
|
uses: openapi-generators/openapitools-generator-action@v1
|
||||||
|
with:
|
||||||
|
generator: typescript-axios
|
||||||
|
generator-tag: v6.2.0
|
||||||
|
openapi-file: server/immich-openapi-specs.json
|
||||||
|
|
||||||
|
# Do something with the generated client (likely publishing it somewhere)
|
||||||
|
- name: Push to typescript repo
|
||||||
|
run: |
|
||||||
|
git config --global init.defaultBranch main
|
||||||
|
git config --global pull.rebase false
|
||||||
|
git config --global user.email "alex.tran1502@gmail.com"
|
||||||
|
git config --global user.name "Alex Tran"
|
||||||
|
cd typescript-axios-client
|
||||||
|
git init
|
||||||
|
git add .
|
||||||
|
git commit -m "Update SDK"
|
||||||
|
git remote add origin https://immich-app:"${{ secrets.GH_TOKEN }}"@github.com/immich-app/immich-sdk-typescript-axios.git
|
||||||
|
git pull origin main --allow-unrelated-histories
|
||||||
|
git push origin main 2>&1 | grep -v 'To https'
|
||||||
|
|
||||||
|
- name: Generate Dart SDK
|
||||||
|
uses: openapi-generators/openapitools-generator-action@v1
|
||||||
|
with:
|
||||||
|
generator: dart
|
||||||
|
generator-tag: v6.2.0
|
||||||
|
openapi-file: server/immich-openapi-specs.json
|
||||||
|
|
||||||
|
- name: Push to Dart repo
|
||||||
|
run: |
|
||||||
|
git config --global init.defaultBranch main
|
||||||
|
git config --global pull.rebase false
|
||||||
|
git config --global user.email "alex.tran1502@gmail.com"
|
||||||
|
git config --global user.name "Alex Tran"
|
||||||
|
cd dart-client
|
||||||
|
git init
|
||||||
|
git add .
|
||||||
|
git commit -m "Update SDK"
|
||||||
|
git remote add origin https://immich-app:"${{ secrets.GH_TOKEN }}"@github.com/immich-app/immich-sdk-dart.git
|
||||||
|
git pull origin main --allow-unrelated-histories
|
||||||
|
git push origin main 2>&1 | grep -v 'To https'
|
||||||
|
|
||||||
|
- name: Generate Rust SDK
|
||||||
|
uses: openapi-generators/openapitools-generator-action@v1
|
||||||
|
with:
|
||||||
|
generator: rust
|
||||||
|
generator-tag: v6.2.0
|
||||||
|
openapi-file: server/immich-openapi-specs.json
|
||||||
|
|
||||||
|
- name: Push to Rust repo
|
||||||
|
run: |
|
||||||
|
git config --global init.defaultBranch main
|
||||||
|
git config --global pull.rebase false
|
||||||
|
git config --global user.email "alex.tran1502@gmail.com"
|
||||||
|
git config --global user.name "Alex Tran"
|
||||||
|
cd rust-client
|
||||||
|
git init
|
||||||
|
git add .
|
||||||
|
git commit -m "Update SDK"
|
||||||
|
git remote add origin https://immich-app:"${{ secrets.GH_TOKEN }}"@github.com/immich-app/immich-sdk-rust.git
|
||||||
|
git pull origin main --allow-unrelated-histories
|
||||||
|
git push origin main 2>&1 | grep -v 'To https'
|
||||||
@@ -9,10 +9,11 @@ export enum GetAssetThumbnailFormatEnum {
|
|||||||
export class GetAssetThumbnailDto {
|
export class GetAssetThumbnailDto {
|
||||||
@IsOptional()
|
@IsOptional()
|
||||||
@ApiProperty({
|
@ApiProperty({
|
||||||
|
type: String,
|
||||||
enum: GetAssetThumbnailFormatEnum,
|
enum: GetAssetThumbnailFormatEnum,
|
||||||
default: GetAssetThumbnailFormatEnum.WEBP,
|
default: GetAssetThumbnailFormatEnum.WEBP,
|
||||||
required: false,
|
required: false,
|
||||||
enumName: 'ThumbnailFormat',
|
enumName: 'ThumbnailFormat',
|
||||||
})
|
})
|
||||||
format = GetAssetThumbnailFormatEnum.WEBP;
|
format: GetAssetThumbnailFormatEnum = GetAssetThumbnailFormatEnum.WEBP;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,8 +14,9 @@ export class GetJobDto {
|
|||||||
message: `params must be one of ${Object.values(JobId).join()}`,
|
message: `params must be one of ${Object.values(JobId).join()}`,
|
||||||
})
|
})
|
||||||
@ApiProperty({
|
@ApiProperty({
|
||||||
|
type: String,
|
||||||
enum: JobId,
|
enum: JobId,
|
||||||
enumName: 'JobId',
|
enumName: 'JobId',
|
||||||
})
|
})
|
||||||
jobId!: string;
|
jobId!: JobId;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -46,6 +46,14 @@ export class BackgroundTaskProcessor {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (asset.encodedVideoPath) {
|
||||||
|
fs.unlink(asset.encodedVideoPath, (err) => {
|
||||||
|
if (err) {
|
||||||
|
console.log('error deleting ', asset.encodedVideoPath);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,20 +39,20 @@ function geocoderLookup(points: { latitude: number; longitude: number }[]) {
|
|||||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
geocoder.lookUp(points, 1, (err, addresses) => {
|
geocoder.lookUp(points, 1, (err, addresses) => {
|
||||||
resolve(addresses[0][0]);
|
resolve(addresses[0][0] as GeoData);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const geocodingPrecisionLevels = ['cities15000', 'cities5000', 'cities1000', 'cities500'];
|
const geocodingPrecisionLevels = ['cities15000', 'cities5000', 'cities1000', 'cities500'];
|
||||||
|
|
||||||
export interface AdminCode {
|
export type AdminCode = {
|
||||||
name: string;
|
name: string;
|
||||||
asciiName: string;
|
asciiName: string;
|
||||||
geoNameId: string;
|
geoNameId: string;
|
||||||
}
|
};
|
||||||
|
|
||||||
export interface GeoData {
|
export type GeoData = {
|
||||||
geoNameId: string;
|
geoNameId: string;
|
||||||
name: string;
|
name: string;
|
||||||
asciiName: string;
|
asciiName: string;
|
||||||
@@ -63,8 +63,8 @@ export interface GeoData {
|
|||||||
featureCode: string;
|
featureCode: string;
|
||||||
countryCode: string;
|
countryCode: string;
|
||||||
cc2?: any;
|
cc2?: any;
|
||||||
admin1Code?: AdminCode;
|
admin1Code?: AdminCode | string;
|
||||||
admin2Code?: AdminCode;
|
admin2Code?: AdminCode | string;
|
||||||
admin3Code?: any;
|
admin3Code?: any;
|
||||||
admin4Code?: any;
|
admin4Code?: any;
|
||||||
population: string;
|
population: string;
|
||||||
@@ -73,7 +73,7 @@ export interface GeoData {
|
|||||||
timezone: string;
|
timezone: string;
|
||||||
modificationDate: string;
|
modificationDate: string;
|
||||||
distance: number;
|
distance: number;
|
||||||
}
|
};
|
||||||
|
|
||||||
@Processor(QueueNameEnum.METADATA_EXTRACTION)
|
@Processor(QueueNameEnum.METADATA_EXTRACTION)
|
||||||
export class MetadataExtractionProcessor {
|
export class MetadataExtractionProcessor {
|
||||||
@@ -123,10 +123,22 @@ export class MetadataExtractionProcessor {
|
|||||||
const city = geoCodeInfo.name;
|
const city = geoCodeInfo.name;
|
||||||
|
|
||||||
let state = '';
|
let state = '';
|
||||||
if (geoCodeInfo.admin2Code?.name) state += geoCodeInfo.admin2Code.name;
|
|
||||||
if (geoCodeInfo.admin1Code?.name) {
|
if (geoCodeInfo.admin2Code) {
|
||||||
if (geoCodeInfo.admin2Code?.name) state += ', ';
|
const adminCode2 = geoCodeInfo.admin2Code as AdminCode;
|
||||||
state += geoCodeInfo.admin1Code.name;
|
state += adminCode2.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (geoCodeInfo.admin1Code) {
|
||||||
|
const adminCode1 = geoCodeInfo.admin1Code as AdminCode;
|
||||||
|
|
||||||
|
if (geoCodeInfo.admin2Code) {
|
||||||
|
const adminCode2 = geoCodeInfo.admin2Code as AdminCode;
|
||||||
|
if (adminCode2.name) {
|
||||||
|
state += ', ';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
state += adminCode1.name;
|
||||||
}
|
}
|
||||||
|
|
||||||
return { country, state, city };
|
return { country, state, city };
|
||||||
|
|||||||
16
server/package-lock.json
generated
16
server/package-lock.json
generated
@@ -36,7 +36,7 @@
|
|||||||
"geo-tz": "^7.0.2",
|
"geo-tz": "^7.0.2",
|
||||||
"i18n-iso-countries": "^7.5.0",
|
"i18n-iso-countries": "^7.5.0",
|
||||||
"joi": "^17.5.0",
|
"joi": "^17.5.0",
|
||||||
"local-reverse-geocoder": "^0.12.2",
|
"local-reverse-geocoder": "^0.12.5",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"luxon": "^3.0.3",
|
"luxon": "^3.0.3",
|
||||||
"passport": "^0.6.0",
|
"passport": "^0.6.0",
|
||||||
@@ -7661,12 +7661,11 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/local-reverse-geocoder": {
|
"node_modules/local-reverse-geocoder": {
|
||||||
"version": "0.12.2",
|
"version": "0.12.5",
|
||||||
"resolved": "https://registry.npmjs.org/local-reverse-geocoder/-/local-reverse-geocoder-0.12.2.tgz",
|
"resolved": "https://registry.npmjs.org/local-reverse-geocoder/-/local-reverse-geocoder-0.12.5.tgz",
|
||||||
"integrity": "sha512-kTSvDxGTuJoqx619jmHFoGCqFpBi0PPwyd7PDOLZCyo8mMEwJSMx713+ksOCihGpzUfO3hcclE7z/T43sY/IaA==",
|
"integrity": "sha512-FaH8+T29K9PQRiiqYlt+M9Qvq9GlSnWEnX0FTDXgPrNzQ9SWWYGEvO5uODwAD6sep9z19u/K/+Z3cw4AGVW97Q==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"async": "^3.2.4",
|
"async": "^3.2.4",
|
||||||
"cors": "^2.8.5",
|
|
||||||
"csv-parse": "^5.3.0",
|
"csv-parse": "^5.3.0",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"kdt": "^0.1.0",
|
"kdt": "^0.1.0",
|
||||||
@@ -17109,12 +17108,11 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"local-reverse-geocoder": {
|
"local-reverse-geocoder": {
|
||||||
"version": "0.12.2",
|
"version": "0.12.5",
|
||||||
"resolved": "https://registry.npmjs.org/local-reverse-geocoder/-/local-reverse-geocoder-0.12.2.tgz",
|
"resolved": "https://registry.npmjs.org/local-reverse-geocoder/-/local-reverse-geocoder-0.12.5.tgz",
|
||||||
"integrity": "sha512-kTSvDxGTuJoqx619jmHFoGCqFpBi0PPwyd7PDOLZCyo8mMEwJSMx713+ksOCihGpzUfO3hcclE7z/T43sY/IaA==",
|
"integrity": "sha512-FaH8+T29K9PQRiiqYlt+M9Qvq9GlSnWEnX0FTDXgPrNzQ9SWWYGEvO5uODwAD6sep9z19u/K/+Z3cw4AGVW97Q==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"async": "^3.2.4",
|
"async": "^3.2.4",
|
||||||
"cors": "^2.8.5",
|
|
||||||
"csv-parse": "^5.3.0",
|
"csv-parse": "^5.3.0",
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
"kdt": "^0.1.0",
|
"kdt": "^0.1.0",
|
||||||
|
|||||||
@@ -55,7 +55,7 @@
|
|||||||
"geo-tz": "^7.0.2",
|
"geo-tz": "^7.0.2",
|
||||||
"i18n-iso-countries": "^7.5.0",
|
"i18n-iso-countries": "^7.5.0",
|
||||||
"joi": "^17.5.0",
|
"joi": "^17.5.0",
|
||||||
"local-reverse-geocoder": "^0.12.2",
|
"local-reverse-geocoder": "^0.12.5",
|
||||||
"lodash": "^4.17.21",
|
"lodash": "^4.17.21",
|
||||||
"luxon": "^3.0.3",
|
"luxon": "^3.0.3",
|
||||||
"passport": "^0.6.0",
|
"passport": "^0.6.0",
|
||||||
|
|||||||
@@ -119,7 +119,7 @@
|
|||||||
in:fade={{ duration: 100 }}
|
in:fade={{ duration: 100 }}
|
||||||
out:fade={{ duration: 100 }}
|
out:fade={{ duration: 100 }}
|
||||||
id="account-info-panel"
|
id="account-info-panel"
|
||||||
class="absolute right-[25px] top-[75px] bg-white shadow-lg rounded-2xl w-[360px] text-center"
|
class="absolute right-[25px] top-[75px] bg-white shadow-lg rounded-2xl w-[360px] text-center z-[100]"
|
||||||
use:clickOutside
|
use:clickOutside
|
||||||
on:out-click={() => (shouldShowAccountInfoPanel = false)}
|
on:out-click={() => (shouldShowAccountInfoPanel = false)}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -94,7 +94,7 @@
|
|||||||
|
|
||||||
<div
|
<div
|
||||||
id="immich-scrubbable-scrollbar"
|
id="immich-scrubbable-scrollbar"
|
||||||
class="fixed right-0 bg-immich-bg z-[999] hover:cursor-row-resize select-none "
|
class="fixed right-0 bg-immich-bg z-[50] hover:cursor-row-resize select-none "
|
||||||
style:width={isDragging ? '100vw' : '60px'}
|
style:width={isDragging ? '100vw' : '60px'}
|
||||||
style:background-color={isDragging ? 'transparent' : 'transparent'}
|
style:background-color={isDragging ? 'transparent' : 'transparent'}
|
||||||
on:mouseenter={() => (isHover = true)}
|
on:mouseenter={() => (isHover = true)}
|
||||||
|
|||||||
Reference in New Issue
Block a user