mirror of
https://github.com/pixelfed/pixelfed.git
synced 2024-11-17 20:11:27 +00:00
commit
65dd601a02
44 changed files with 1174 additions and 1068 deletions
|
@ -1,6 +1,9 @@
|
||||||
# Release Notes
|
# Release Notes
|
||||||
|
|
||||||
## [Unreleased](https://github.com/pixelfed/pixelfed/compare/v0.12.3...dev)
|
## [Unreleased](https://github.com/pixelfed/pixelfed/compare/v0.12.3...dev)
|
||||||
|
- ([](https://github.com/pixelfed/pixelfed/commit/))
|
||||||
|
|
||||||
|
## [v0.12.4 (2024-11-08)](https://github.com/pixelfed/pixelfed/compare/v0.12.4...dev)
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
- Implement Admin Domain Blocks API (Mastodon API Compatible) [ThisIsMissEm](https://github.com/ThisIsMissEm) ([#5021](https://github.com/pixelfed/pixelfed/pull/5021))
|
- Implement Admin Domain Blocks API (Mastodon API Compatible) [ThisIsMissEm](https://github.com/ThisIsMissEm) ([#5021](https://github.com/pixelfed/pixelfed/pull/5021))
|
||||||
|
@ -36,7 +39,7 @@
|
||||||
- Update config, allow Beagle discover service to be disabled ([de4ce3c8](https://github.com/pixelfed/pixelfed/commit/de4ce3c8))
|
- Update config, allow Beagle discover service to be disabled ([de4ce3c8](https://github.com/pixelfed/pixelfed/commit/de4ce3c8))
|
||||||
- Update ApiV1Dot1Controller, allow upto 5 similar push tokens ([7820b506](https://github.com/pixelfed/pixelfed/commit/7820b506))
|
- Update ApiV1Dot1Controller, allow upto 5 similar push tokens ([7820b506](https://github.com/pixelfed/pixelfed/commit/7820b506))
|
||||||
- Update AdminReports, add missing click handler. Fixes #5332 ([fe48b8ad](https://github.com/pixelfed/pixelfed/commit/fe48b8ad))
|
- Update AdminReports, add missing click handler. Fixes #5332 ([fe48b8ad](https://github.com/pixelfed/pixelfed/commit/fe48b8ad))
|
||||||
- ([](https://github.com/pixelfed/pixelfed/commit/))
|
- Improve media filtering by using OffscreenCanvas, if supported ([aea5392](https://github.com/pixelfed/pixelfed/commit/aea5392))
|
||||||
|
|
||||||
## [v0.12.3 (2024-07-01)](https://github.com/pixelfed/pixelfed/compare/v0.12.2...v0.12.3)
|
## [v0.12.3 (2024-07-01)](https://github.com/pixelfed/pixelfed/compare/v0.12.2...v0.12.3)
|
||||||
|
|
||||||
|
|
21
Dockerfile
21
Dockerfile
|
@ -194,6 +194,7 @@ FROM --platform=${BUILDARCH} node:lts AS frontend-build
|
||||||
ARG BUILDARCH
|
ARG BUILDARCH
|
||||||
ARG BUILD_FRONTEND=0
|
ARG BUILD_FRONTEND=0
|
||||||
ARG RUNTIME_UID
|
ARG RUNTIME_UID
|
||||||
|
ARG RUNTIME_GID
|
||||||
|
|
||||||
ARG NODE_ENV=production
|
ARG NODE_ENV=production
|
||||||
ENV NODE_ENV=$NODE_ENV
|
ENV NODE_ENV=$NODE_ENV
|
||||||
|
@ -256,17 +257,26 @@ COPY --link --from=composer-image /usr/bin/composer /usr/bin/composer
|
||||||
#! Changing user to runtime user
|
#! Changing user to runtime user
|
||||||
USER ${RUNTIME_UID}:${RUNTIME_GID}
|
USER ${RUNTIME_UID}:${RUNTIME_GID}
|
||||||
|
|
||||||
|
|
||||||
# Install composer dependencies
|
# Install composer dependencies
|
||||||
# NOTE: we skip the autoloader generation here since we don't have all files avaliable (yet)
|
# NOTE: we skip the autoloader generation here since we don't have all files avaliable (yet)
|
||||||
RUN --mount=type=cache,id=pixelfed-composer-${PHP_VERSION},sharing=locked,target=/cache/composer \
|
RUN --mount=type=cache,id=pixelfed-composer-${PHP_VERSION},sharing=locked,uid=${RUNTIME_UID},gid=${RUNTIME_GID},target=/cache/composer \
|
||||||
--mount=type=bind,source=composer.json,target=/var/www/composer.json \
|
--mount=type=bind,source=composer.json,target=/var/www/composer.json \
|
||||||
--mount=type=bind,source=composer.lock,target=/var/www/composer.lock \
|
--mount=type=bind,source=composer.lock,target=/var/www/composer.lock \
|
||||||
set -ex \
|
set -ex \
|
||||||
&& composer install --prefer-dist --no-autoloader --ignore-platform-reqs
|
&& composer install --prefer-dist --no-autoloader --ignore-platform-reqs --no-scripts
|
||||||
|
|
||||||
# Copy all other files over
|
# Copy all other files over
|
||||||
COPY --chown=${RUNTIME_UID}:${RUNTIME_GID} . /var/www/
|
COPY --chown=${RUNTIME_UID}:${RUNTIME_GID} . /var/www/
|
||||||
|
|
||||||
|
# Generate optimized autoloader now that we have all files around
|
||||||
|
RUN set -ex \
|
||||||
|
&& ENABLE_CONFIG_CACHE=false composer dump-autoload --optimize
|
||||||
|
|
||||||
|
# Now we can run the post-install scripts
|
||||||
|
RUN set -ex \
|
||||||
|
&& composer run-script post-update-cmd
|
||||||
|
|
||||||
#######################################################
|
#######################################################
|
||||||
# Runtime: base
|
# Runtime: base
|
||||||
#######################################################
|
#######################################################
|
||||||
|
@ -286,13 +296,6 @@ COPY --link --from=composer-image /usr/bin/composer /usr/bin/composer
|
||||||
COPY --link --from=composer-and-src --chown=${RUNTIME_UID}:${RUNTIME_GID} /var/www /var/www
|
COPY --link --from=composer-and-src --chown=${RUNTIME_UID}:${RUNTIME_GID} /var/www /var/www
|
||||||
COPY --link --from=frontend-build --chown=${RUNTIME_UID}:${RUNTIME_GID} /var/www/public /var/www/public
|
COPY --link --from=frontend-build --chown=${RUNTIME_UID}:${RUNTIME_GID} /var/www/public /var/www/public
|
||||||
|
|
||||||
#! Changing user to runtime user
|
|
||||||
USER ${RUNTIME_UID}:${RUNTIME_GID}
|
|
||||||
|
|
||||||
# Generate optimized autoloader now that we have all files around
|
|
||||||
RUN set -ex \
|
|
||||||
&& ENABLE_CONFIG_CACHE=false composer dump-autoload --optimize
|
|
||||||
|
|
||||||
USER root
|
USER root
|
||||||
|
|
||||||
# for detail why storage is copied this way, pls refer to https://github.com/pixelfed/pixelfed/pull/2137#discussion_r434468862
|
# for detail why storage is copied this way, pls refer to https://github.com/pixelfed/pixelfed/pull/2137#discussion_r434468862
|
||||||
|
|
46
composer.lock
generated
46
composer.lock
generated
|
@ -62,16 +62,16 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "aws/aws-sdk-php",
|
"name": "aws/aws-sdk-php",
|
||||||
"version": "3.325.3",
|
"version": "3.325.5",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/aws/aws-sdk-php.git",
|
"url": "https://github.com/aws/aws-sdk-php.git",
|
||||||
"reference": "de0b289c7260fb19301ffa2eb724de2076daad74"
|
"reference": "195d003c902a741de53008c839cbcebddbe1f326"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/de0b289c7260fb19301ffa2eb724de2076daad74",
|
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/195d003c902a741de53008c839cbcebddbe1f326",
|
||||||
"reference": "de0b289c7260fb19301ffa2eb724de2076daad74",
|
"reference": "195d003c902a741de53008c839cbcebddbe1f326",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -154,9 +154,9 @@
|
||||||
"support": {
|
"support": {
|
||||||
"forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
|
"forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
|
||||||
"issues": "https://github.com/aws/aws-sdk-php/issues",
|
"issues": "https://github.com/aws/aws-sdk-php/issues",
|
||||||
"source": "https://github.com/aws/aws-sdk-php/tree/3.325.3"
|
"source": "https://github.com/aws/aws-sdk-php/tree/3.325.5"
|
||||||
},
|
},
|
||||||
"time": "2024-11-06T19:05:22+00:00"
|
"time": "2024-11-08T19:12:57+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "bacon/bacon-qr-code",
|
"name": "bacon/bacon-qr-code",
|
||||||
|
@ -3113,16 +3113,16 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "lcobucci/jwt",
|
"name": "lcobucci/jwt",
|
||||||
"version": "5.4.1",
|
"version": "5.4.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/lcobucci/jwt.git",
|
"url": "https://github.com/lcobucci/jwt.git",
|
||||||
"reference": "848815d2287abd5d3c285482f8e1f501b289a2e7"
|
"reference": "ea1ce71cbf9741e445a5914e2f67cdbb484ff712"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/lcobucci/jwt/zipball/848815d2287abd5d3c285482f8e1f501b289a2e7",
|
"url": "https://api.github.com/repos/lcobucci/jwt/zipball/ea1ce71cbf9741e445a5914e2f67cdbb484ff712",
|
||||||
"reference": "848815d2287abd5d3c285482f8e1f501b289a2e7",
|
"reference": "ea1ce71cbf9741e445a5914e2f67cdbb484ff712",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -3170,7 +3170,7 @@
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/lcobucci/jwt/issues",
|
"issues": "https://github.com/lcobucci/jwt/issues",
|
||||||
"source": "https://github.com/lcobucci/jwt/tree/5.4.1"
|
"source": "https://github.com/lcobucci/jwt/tree/5.4.2"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
|
@ -3182,7 +3182,7 @@
|
||||||
"type": "patreon"
|
"type": "patreon"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2024-11-06T06:16:04+00:00"
|
"time": "2024-11-07T12:54:35+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "league/commonmark",
|
"name": "league/commonmark",
|
||||||
|
@ -4296,16 +4296,16 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "nesbot/carbon",
|
"name": "nesbot/carbon",
|
||||||
"version": "3.8.1",
|
"version": "3.8.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/briannesbitt/Carbon.git",
|
"url": "https://github.com/briannesbitt/Carbon.git",
|
||||||
"reference": "10ac0aa86b8062219ce21e8189123d611ca3ecd9"
|
"reference": "e1268cdbc486d97ce23fef2c666dc3c6b6de9947"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/10ac0aa86b8062219ce21e8189123d611ca3ecd9",
|
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/e1268cdbc486d97ce23fef2c666dc3c6b6de9947",
|
||||||
"reference": "10ac0aa86b8062219ce21e8189123d611ca3ecd9",
|
"reference": "e1268cdbc486d97ce23fef2c666dc3c6b6de9947",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -4398,7 +4398,7 @@
|
||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2024-11-03T16:02:24+00:00"
|
"time": "2024-11-07T17:46:48+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "nette/schema",
|
"name": "nette/schema",
|
||||||
|
@ -10918,16 +10918,16 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "myclabs/deep-copy",
|
"name": "myclabs/deep-copy",
|
||||||
"version": "1.12.0",
|
"version": "1.12.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/myclabs/DeepCopy.git",
|
"url": "https://github.com/myclabs/DeepCopy.git",
|
||||||
"reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c"
|
"reference": "123267b2c49fbf30d78a7b2d333f6be754b94845"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c",
|
"url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845",
|
||||||
"reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c",
|
"reference": "123267b2c49fbf30d78a7b2d333f6be754b94845",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -10966,7 +10966,7 @@
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/myclabs/DeepCopy/issues",
|
"issues": "https://github.com/myclabs/DeepCopy/issues",
|
||||||
"source": "https://github.com/myclabs/DeepCopy/tree/1.12.0"
|
"source": "https://github.com/myclabs/DeepCopy/tree/1.12.1"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
|
@ -10974,7 +10974,7 @@
|
||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2024-06-12T14:39:25+00:00"
|
"time": "2024-11-08T17:47:46+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "nunomaduro/collision",
|
"name": "nunomaduro/collision",
|
||||||
|
|
|
@ -23,7 +23,7 @@ return [
|
||||||
| This value is the version of your Pixelfed instance.
|
| This value is the version of your Pixelfed instance.
|
||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
'version' => '0.12.3',
|
'version' => '0.12.4',
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
|
|
2063
package-lock.json
generated
2063
package-lock.json
generated
File diff suppressed because it is too large
Load diff
BIN
public/js/compose.chunk.34ebded0861594ef.js
vendored
BIN
public/js/compose.chunk.34ebded0861594ef.js
vendored
Binary file not shown.
BIN
public/js/compose.chunk.e1f297b242137d23.js
vendored
Normal file
BIN
public/js/compose.chunk.e1f297b242137d23.js
vendored
Normal file
Binary file not shown.
BIN
public/js/compose.js
vendored
BIN
public/js/compose.js
vendored
Binary file not shown.
Binary file not shown.
1
public/js/home.chunk.c362371940daf318.js.LICENSE.txt
Normal file
1
public/js/home.chunk.c362371940daf318.js.LICENSE.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
|
BIN
public/js/manifest.js
vendored
BIN
public/js/manifest.js
vendored
Binary file not shown.
Binary file not shown.
1
public/js/post.chunk.5f457aeaa4ae598c.js.LICENSE.txt
Normal file
1
public/js/post.chunk.5f457aeaa4ae598c.js.LICENSE.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
|
BIN
public/js/vendor.js
vendored
BIN
public/js/vendor.js
vendored
Binary file not shown.
Binary file not shown.
|
@ -1095,11 +1095,12 @@ export default {
|
||||||
},
|
},
|
||||||
|
|
||||||
defineErrorMessage(errObject) {
|
defineErrorMessage(errObject) {
|
||||||
|
let msg;
|
||||||
if (errObject.response) {
|
if (errObject.response) {
|
||||||
let msg = errObject.response.data.message ? errObject.response.data.message : 'An unexpected error occured.';
|
msg = errObject.response.data.message ? errObject.response.data.message : 'An unexpected error occured.';
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
let msg = errObject.message;
|
msg = errObject.message;
|
||||||
}
|
}
|
||||||
return swal('Oops, something went wrong!', msg, 'error');
|
return swal('Oops, something went wrong!', msg, 'error');
|
||||||
},
|
},
|
||||||
|
@ -1765,57 +1766,91 @@ export default {
|
||||||
|
|
||||||
applyFilterToMedia() {
|
applyFilterToMedia() {
|
||||||
// this is where the magic happens
|
// this is where the magic happens
|
||||||
var ua = navigator.userAgent.toLowerCase();
|
|
||||||
if(ua.indexOf('firefox') == -1 && ua.indexOf('chrome') == -1) {
|
|
||||||
this.isPosting = false;
|
|
||||||
swal('Oops!', 'Your browser does not support the filter feature.', 'error');
|
|
||||||
this.page = 3;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let count = this.media.filter(m => m.filter_class).length;
|
let count = this.media.filter(m => m.filter_class).length;
|
||||||
if(count) {
|
if(count) {
|
||||||
this.page = 'filteringMedia';
|
this.page = 'filteringMedia';
|
||||||
this.filteringRemainingCount = count;
|
this.filteringRemainingCount = count;
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.isFilteringMedia = true;
|
this.isFilteringMedia = true;
|
||||||
this.media.forEach((media, idx) => this.applyFilterToMediaSave(media, idx));
|
Promise.all(this.media.map(media => {
|
||||||
|
return this.applyFilterToMediaSave(media);
|
||||||
|
})).catch(err => {
|
||||||
|
console.error(err);
|
||||||
|
swal('Oops!', 'An error occurred while applying filters to your media. Please refresh the page and try again. If the problem persist, please try a different web browser.', 'error');
|
||||||
|
});
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
this.page = 3;
|
this.page = 3;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
applyFilterToMediaSave(media, idx) {
|
async applyFilterToMediaSave(media) {
|
||||||
if(!media.filter_class) {
|
if(!media.filter_class) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let self = this;
|
// Load image
|
||||||
let data = null;
|
const image = document.createElement('img');
|
||||||
const canvas = document.createElement('canvas');
|
|
||||||
const ctx = canvas.getContext('2d');
|
|
||||||
let image = document.createElement('img');
|
|
||||||
image.src = media.url;
|
image.src = media.url;
|
||||||
image.addEventListener('load', e => {
|
await new Promise((resolve, reject) => {
|
||||||
|
image.addEventListener('load', () => resolve());
|
||||||
|
image.addEventListener('error', () => {
|
||||||
|
reject(new Error('Failed to load image'));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Create canvas
|
||||||
|
let canvas;
|
||||||
|
let usingOffscreenCanvas = false;
|
||||||
|
if('OffscreenCanvas' in window) {
|
||||||
|
canvas = new OffscreenCanvas(image.width, image.height);
|
||||||
|
usingOffscreenCanvas = true;
|
||||||
|
} else {
|
||||||
|
canvas = document.createElement('canvas');
|
||||||
canvas.width = image.width;
|
canvas.width = image.width;
|
||||||
canvas.height = image.height;
|
canvas.height = image.height;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Draw image with filter to canvas
|
||||||
|
const ctx = canvas.getContext('2d');
|
||||||
|
if (!ctx) {
|
||||||
|
throw new Error('Failed to get canvas context');
|
||||||
|
}
|
||||||
|
if (!('filter' in ctx)) {
|
||||||
|
throw new Error('Canvas filter not supported');
|
||||||
|
}
|
||||||
ctx.filter = App.util.filterCss[media.filter_class];
|
ctx.filter = App.util.filterCss[media.filter_class];
|
||||||
ctx.drawImage(image, 0, 0, image.width, image.height);
|
ctx.drawImage(image, 0, 0, image.width, image.height);
|
||||||
ctx.save();
|
ctx.save();
|
||||||
canvas.toBlob(function(blob) {
|
|
||||||
data = new FormData();
|
// Convert canvas to blob
|
||||||
|
let blob;
|
||||||
|
if(usingOffscreenCanvas) {
|
||||||
|
blob = await canvas.convertToBlob({
|
||||||
|
type: media.mime,
|
||||||
|
quality: 1,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
blob = await new Promise((resolve, reject) => {
|
||||||
|
canvas.toBlob(blob => {
|
||||||
|
if(blob) {
|
||||||
|
resolve(blob);
|
||||||
|
} else {
|
||||||
|
reject(
|
||||||
|
new Error('Failed to convert canvas to blob'),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}, media.mime, 1);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Upload blob / Update media
|
||||||
|
const data = new FormData();
|
||||||
data.append('file', blob);
|
data.append('file', blob);
|
||||||
data.append('id', media.id);
|
data.append('id', media.id);
|
||||||
axios.post('/api/compose/v0/media/update', data)
|
await axios.post('/api/compose/v0/media/update', data);
|
||||||
.then(res => {
|
media.is_filtered = true;
|
||||||
self.media[idx].is_filtered = true;
|
this.updateFilteringMedia();
|
||||||
self.updateFilteringMedia();
|
|
||||||
}).catch(err => {
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}, media.mime, 0.9);
|
|
||||||
ctx.clearRect(0, 0, image.width, image.height);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
updateFilteringMedia() {
|
updateFilteringMedia() {
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
<p class="text-center font-weight-bold">How to get your export data from Instagram:</p>
|
<p class="text-center font-weight-bold">How to get your export data from Instagram:</p>
|
||||||
<ol class="pb-4">
|
<ol class="pb-4">
|
||||||
<li class="mb-2">
|
<li class="mb-2">
|
||||||
<span>Follow the Instagram instructions on <strong>Downloading a copy of your data on Instagram</strong> on <a href="https://help.instagram.com/181231772500920" class="font-weight-bold">this page</a>. <strong class="text-danger small font-weight-bold">Make sure you select the JSON format</strong></span>
|
<span><strong>Download your information in Instagram's Accounts Center</strong> on <a href="https://www.instagram.com/download/request" class="font-weight-bold">this page</a>. <strong class="text-danger small font-weight-bold">Make sure you select the JSON format</strong></span>
|
||||||
</li>
|
</li>
|
||||||
<li class="mb-2">
|
<li class="mb-2">
|
||||||
<span>Wait for the email from Instagram with your download link</span>
|
<span>Wait for the email from Instagram with your download link</span>
|
||||||
|
|
Loading…
Reference in a new issue