diff --git a/CHANGELOG.md b/CHANGELOG.md index bf1f17569..137874083 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,10 +3,36 @@ ## [Unreleased](https://github.com/pixelfed/pixelfed/compare/v0.10.6...dev) ### Added +- Added drafts API endpoint for Camera Roll ([bad2ecde](https://github.com/pixelfed/pixelfed/commit/bad2ecde)) ### Fixed +- Fixed like and share/reblog count on profiles ([86cb7d09](https://github.com/pixelfed/pixelfed/commit/86cb7d09)) +- Fixed non federating self boosts ([0c59a55e](https://github.com/pixelfed/pixelfed/commit/0c59a55e)) +- Fixed CORS issues with API endpoints ([6d6f517d](https://github.com/pixelfed/pixelfed/commit/6d6f517d)) +- Fixed mixed albums not appearing on timelines ([e01dff45](https://github.com/pixelfed/pixelfed/commit/e01dff45)) ### Changed +- Removed ```relationship``` from ```AccountTransformer``` ([4d084ac5](https://github.com/pixelfed/pixelfed/commit/4d084ac5)) +- Updated ```notification``` api endpoint to use ```NotificationService``` ([f4039ce2](https://github.com/pixelfed/pixelfed/commit/f4039ce2)) ([6ef7597](https://github.com/pixelfed/pixelfed/commit/6ef7597)) +- Update footer to use localization for the ```Places``` link ([39712714](https://github.com/pixelfed/pixelfed/commit/39712714)) +- Updated ComposeModal.vue, added a caption counter. Fixes [#1722](https://github.com/pixelfed/pixelfed/issues/1722). ([009c6ee8](https://github.com/pixelfed/pixelfed/commit/009c6ee8)) +- Updated Notifications to use the NotificationService ([f4039ce2](https://github.com/pixelfed/pixelfed/commit/f4039ce218f93a5578225dfdba66f0359c8fc72c)) +- Updated PrivacySettings controller, clear cache after updating ([d8d11d7b](https://github.com/pixelfed/pixelfed/commit/d8d11d7b)) +- Updated BaseApiController, add timestamp to signed media previews for client side cache invalidation ([73c08987](https://github.com/pixelfed/pixelfed/commit/73c08987)) +- Updated AdminInstanceController, remove db transaction from instance scan ([5773434a](https://github.com/pixelfed/pixelfed/commit/5773434a)) +- Updated Help Center view, added outdated warning ([0e611d00](https://github.com/pixelfed/pixelfed/commit/0e611d00)) +- Updated language view, added English version of language names ([ebb998d2](https://github.com/pixelfed/pixelfed/commit/ebb998d2)) +- Updated app.js, added App.utils like ```.format.count```, ```.filters``` and ```.emoji``` ([34c13b6e](https://github.com/pixelfed/pixelfed/commit/34c13b6e)) +- Updated CollectionCompose.vue component, fix api namespace change ([71ed965c](https://github.com/pixelfed/pixelfed/commit/71ed965c)) +- Updated PostComponent, mark caption sensitive if post is and use util.emoji ([35d51215](https://github.com/pixelfed/pixelfed/commit/35d51215)) +- Updated Profile.vue component, use formatted counts ([30f14961](https://github.com/pixelfed/pixelfed/commit/30f14961)) +- Updated Timeline.vue component, use formatted counts, util.emoji and increase pagination limit to 5 ([abfc9fe7](https://github.com/pixelfed/pixelfed/commit/abfc9fe7)) +- Updated album presenters, use better carousel ([31b114cc](https://github.com/pixelfed/pixelfed/commit/31b114cc)) ([0617fada](https://github.com/pixelfed/pixelfed/commit/0617fada)) ([767fc887](https://github.com/pixelfed/pixelfed/commit/767fc887)) +- Updated Timeline.vue component, remove tap for lightbox as it conflicts with new carousel ([96e25ad2](https://github.com/pixelfed/pixelfed/commit/96e25ad2)) +- Updated ComposeModal.vue, added album support, editing and UI tweaks ([3aaad81e](https://github.com/pixelfed/pixelfed/commit/3aaad81e)) +- Updated InternalApiController, increase license limit to 140 to match UI counter ([b3c18aec](https://github.com/pixelfed/pixelfed/commit/b3c18aec)) + +## Deprecated ## [v0.10.6 (2019-09-30)](https://github.com/pixelfed/pixelfed/compare/v0.10.5...v0.10.6) diff --git a/app/Http/Controllers/Admin/AdminInstanceController.php b/app/Http/Controllers/Admin/AdminInstanceController.php index 5da2143f3..6dfa8d7bf 100644 --- a/app/Http/Controllers/Admin/AdminInstanceController.php +++ b/app/Http/Controllers/Admin/AdminInstanceController.php @@ -42,18 +42,18 @@ trait AdminInstanceController public function instanceScan(Request $request) { - DB::transaction(function() { - Profile::select('domain')->whereNotNull('domain') - ->groupBy('id') - ->groupBy('domain') - ->chunk(50, function($domains) { - foreach($domains as $domain) { - Instance::firstOrCreate([ - 'domain' => $domain->domain - ]); - } - }); + Profile::whereNotNull('domain') + ->latest() + ->groupBy('domain') + ->where('created_at', '>', now()->subMonths(2)) + ->chunk(100, function($domains) { + foreach($domains as $domain) { + Instance::firstOrCreate([ + 'domain' => $domain->domain + ]); + } }); + return redirect()->back(); } diff --git a/app/Http/Controllers/Api/BaseApiController.php b/app/Http/Controllers/Api/BaseApiController.php index 3d70d4b7f..55f1aef94 100644 --- a/app/Http/Controllers/Api/BaseApiController.php +++ b/app/Http/Controllers/Api/BaseApiController.php @@ -20,6 +20,7 @@ use App\Transformer\Api\{ AccountTransformer, NotificationTransformer, MediaTransformer, + MediaDraftTransformer, StatusTransformer }; use League\Fractal; @@ -192,7 +193,7 @@ class BaseApiController extends Controller ]); } - public function showTempMedia(Request $request, int $profileId, $mediaId) + public function showTempMedia(Request $request, int $profileId, $mediaId, $timestamp) { abort_if(!$request->user(), 403); abort_if(!$request->hasValidSignature(), 404); @@ -257,10 +258,9 @@ class BaseApiController extends Controller $media->save(); $url = URL::temporarySignedRoute( - 'temp-media', now()->addHours(1), ['profileId' => $profile->id, 'mediaId' => $media->id] + 'temp-media', now()->addHours(1), ['profileId' => $profile->id, 'mediaId' => $media->id, 'timestamp' => time()] ); - $preview_url = $url; switch ($media->mime) { case 'image/jpeg': case 'image/png': @@ -279,7 +279,7 @@ class BaseApiController extends Controller $resource = new Fractal\Resource\Item($media, new MediaTransformer()); $res = $this->fractal->createData($resource)->toArray(); - $res['preview_url'] = $preview_url; + $res['preview_url'] = $url; $res['url'] = $url; return response()->json($res); } @@ -308,8 +308,9 @@ class BaseApiController extends Controller public function verifyCredentials(Request $request) { - abort_if(!$request->user(), 403); - $id = Auth::id(); + $user = $request->user(); + abort_if(!$user, 403); + $id = $user->id; $res = Cache::remember('user:account:id:'.$id, now()->addHours(6), function() use($id) { $profile = Profile::whereNull('status')->whereUserId($id)->firstOrFail(); @@ -320,4 +321,19 @@ class BaseApiController extends Controller return response()->json($res); } + + public function drafts(Request $request) + { + $user = $request->user(); + abort_if(!$request->user(), 403); + + $medias = Media::whereUserId($user->id) + ->whereNull('status_id') + ->latest() + ->take(13) + ->get(); + $resource = new Fractal\Resource\Collection($medias, new MediaDraftTransformer()); + $res = $this->fractal->createData($resource)->toArray(); + return response()->json($res, 200, [], JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES); + } } diff --git a/app/Http/Controllers/InternalApiController.php b/app/Http/Controllers/InternalApiController.php index 081ec1f7e..3976e56f3 100644 --- a/app/Http/Controllers/InternalApiController.php +++ b/app/Http/Controllers/InternalApiController.php @@ -237,7 +237,8 @@ class InternalApiController extends Controller 'media.*' => 'required', 'media.*.id' => 'required|integer|min:1', 'media.*.filter_class' => 'nullable|alpha_dash|max:30', - 'media.*.license' => 'nullable|string|max:80', + 'media.*.license' => 'nullable|string|max:140', + 'media.*.alt' => 'nullable|string|max:140', 'cw' => 'nullable|boolean', 'visibility' => 'required|string|in:public,private,unlisted|min:2|max:10', 'place' => 'nullable', diff --git a/app/Http/Controllers/PublicApiController.php b/app/Http/Controllers/PublicApiController.php index 64faa05e1..4003615ec 100644 --- a/app/Http/Controllers/PublicApiController.php +++ b/app/Http/Controllers/PublicApiController.php @@ -281,7 +281,7 @@ class PublicApiController extends Controller 'updated_at' )->where('id', $dir, $id) ->with('profile', 'hashtags', 'mentions') - ->whereIn('type', ['photo', 'photo:album', 'video', 'video:album']) + ->whereIn('type', ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album']) ->whereLocal(true) ->whereNotIn('profile_id', $filtered) ->whereVisibility('public') @@ -309,7 +309,7 @@ class PublicApiController extends Controller 'likes_count', 'reblogs_count', 'updated_at' - )->whereIn('type', ['photo', 'photo:album', 'video', 'video:album']) + )->whereIn('type', ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album']) ->with('profile', 'hashtags', 'mentions') ->whereLocal(true) ->whereNotIn('profile_id', $filtered) @@ -392,7 +392,7 @@ class PublicApiController extends Controller 'reblogs_count', 'created_at', 'updated_at' - )->whereIn('type', ['photo', 'photo:album', 'video', 'video:album']) + )->whereIn('type', ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album']) ->with('profile', 'hashtags', 'mentions') ->where('id', $dir, $id) ->whereIn('profile_id', $following) @@ -421,7 +421,7 @@ class PublicApiController extends Controller 'reblogs_count', 'created_at', 'updated_at' - )->whereIn('type', ['photo', 'photo:album', 'video', 'video:album']) + )->whereIn('type', ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album']) ->with('profile', 'hashtags', 'mentions') ->whereIn('profile_id', $following) ->whereNotIn('profile_id', $filtered) diff --git a/app/Http/Controllers/Settings/PrivacySettings.php b/app/Http/Controllers/Settings/PrivacySettings.php index 754258fc7..dff6636eb 100644 --- a/app/Http/Controllers/Settings/PrivacySettings.php +++ b/app/Http/Controllers/Settings/PrivacySettings.php @@ -66,6 +66,7 @@ trait PrivacySettings $settings->save(); } Cache::forget('profile:settings:' . $profile->id); + Cache::forget('user:account:id:' . $profile->user_id); return redirect(route('settings.privacy'))->with('status', 'Settings successfully updated!'); } diff --git a/app/Jobs/SharePipeline/SharePipeline.php b/app/Jobs/SharePipeline/SharePipeline.php index b62c51268..c7328db38 100644 --- a/app/Jobs/SharePipeline/SharePipeline.php +++ b/app/Jobs/SharePipeline/SharePipeline.php @@ -61,7 +61,12 @@ class SharePipeline implements ShouldQueue ->whereItemType('App\Status') ->count(); - if ($target->id === $status->profile_id || $exists !== 0) { + if ($target->id === $status->profile_id) { + $this->remoteAnnounceDeliver(); + return true; + } + + if( $exists !== 0) { return true; } @@ -88,6 +93,9 @@ class SharePipeline implements ShouldQueue public function remoteAnnounceDeliver() { + if(config('federation.activitypub.enabled') == false) { + return true; + } $status = $this->status; $profile = $status->profile; diff --git a/app/Transformer/Api/MediaDraftTransformer.php b/app/Transformer/Api/MediaDraftTransformer.php new file mode 100644 index 000000000..bb531f556 --- /dev/null +++ b/app/Transformer/Api/MediaDraftTransformer.php @@ -0,0 +1,38 @@ +addHours(1), ['profileId' => $media->profile_id, 'mediaId' => $media->id, 'timestamp' => time()] + ); + + //$url = $media->thumbnailUrl(); + //$url = $media->url(); + + return [ + 'id' => (string) $media->id, + 'type' => $media->activityVerb(), + 'url' => $url, + 'remote_url' => null, + 'preview_url' => $url, + 'text_url' => null, + 'meta' => null, + 'description' => $media->caption, + 'license' => $media->license, + 'is_nsfw' => $media->is_nsfw, + 'orientation' => $media->orientation, + 'filter_name' => $media->filter_name, + 'filter_class' => $media->filter_class, + 'mime' => $media->mime, + ]; + } +} diff --git a/contrib/docker/Dockerfile.apache b/contrib/docker/Dockerfile.apache index 162397168..4e089faed 100644 --- a/contrib/docker/Dockerfile.apache +++ b/contrib/docker/Dockerfile.apache @@ -44,7 +44,7 @@ COPY . /var/www/ WORKDIR /var/www/ RUN cp -r storage storage.skel \ && cp contrib/docker/php.ini /usr/local/etc/php/conf.d/pixelfed.ini \ - && composer install --prefer-source --no-interaction \ + && composer install --prefer-dist --no-interaction \ && rm -rf html && ln -s public html VOLUME /var/www/storage /var/www/bootstrap diff --git a/package-lock.json b/package-lock.json index 9504ca5a9..d4cc0df1a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,4 +1,5 @@ { + "name": "pixelfed", "requires": true, "lockfileVersion": 1, "dependencies": { @@ -3106,6 +3107,11 @@ "entities": "^1.1.1" } }, + "dom-walk": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", + "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg=" + }, "domain-browser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", @@ -4621,6 +4627,15 @@ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" }, + "global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "requires": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, "global-modules": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", @@ -6085,6 +6100,14 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "requires": { + "dom-walk": "^0.1.0" + } + }, "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -7787,14 +7810,14 @@ "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==" }, "quill": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.6.tgz", - "integrity": "sha512-K0mvhimWZN6s+9OQ249CH2IEPZ9JmkFuCQeHAOQax3EZ2nDJ3wfGh59mnlQaZV2i7u8eFarx6wAtvQKgShojug==", + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.7.tgz", + "integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==", "requires": { "clone": "^2.1.1", "deep-equal": "^1.0.1", "eventemitter3": "^2.0.3", - "extend": "^3.0.1", + "extend": "^3.0.2", "parchment": "^1.1.4", "quill-delta": "^3.6.2" }, @@ -9856,8 +9879,24 @@ "vue": { "version": "2.6.10", "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.10.tgz", - "integrity": "sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ==", - "dev": true + "integrity": "sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ==" + }, + "vue-carousel": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/vue-carousel/-/vue-carousel-0.18.0.tgz", + "integrity": "sha512-a2zxh7QJioDxNMguqcuJ7TPbfgK5bGDaAXIia7NWxPAWsEvNE4ZtHgsGu40L5Aha4uyjmNKXvleB14QAXFoKig==", + "requires": { + "global": "^4.3.2", + "regenerator-runtime": "^0.12.1", + "vue": "^2.5.17" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz", + "integrity": "sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg==" + } + } }, "vue-content-loader": { "version": "0.2.2", diff --git a/package.json b/package.json index 2bed7b899..70054c087 100644 --- a/package.json +++ b/package.json @@ -45,6 +45,7 @@ "socket.io-client": "^2.2.0", "sweetalert": "^2.1.2", "twitter-text": "^2.0.5", + "vue-carousel": "^0.18.0", "vue-content-loader": "^0.2.2", "vue-cropperjs": "^4.0.0", "vue-infinite-loading": "^2.4.4", diff --git a/public/css/app.css b/public/css/app.css index 601f94f62..f50d2c80d 100644 Binary files a/public/css/app.css and b/public/css/app.css differ diff --git a/public/css/appdark.css b/public/css/appdark.css index b0e3cfd3f..01fc04b66 100644 Binary files a/public/css/appdark.css and b/public/css/appdark.css differ diff --git a/public/css/landing.css b/public/css/landing.css index 8ab253b47..9890f0b63 100644 Binary files a/public/css/landing.css and b/public/css/landing.css differ diff --git a/public/css/quill.css b/public/css/quill.css index 6383e8081..a1b638f27 100644 Binary files a/public/css/quill.css and b/public/css/quill.css differ diff --git a/public/js/app.js b/public/js/app.js index 867555714..aba4fe8e2 100644 Binary files a/public/js/app.js and b/public/js/app.js differ diff --git a/public/js/collectioncompose.js b/public/js/collectioncompose.js index b7b1e131e..c6d9d4653 100644 Binary files a/public/js/collectioncompose.js and b/public/js/collectioncompose.js differ diff --git a/public/js/components.js b/public/js/components.js index 317187b5b..c517dc219 100644 Binary files a/public/js/components.js and b/public/js/components.js differ diff --git a/public/js/compose.js b/public/js/compose.js index f4752f38f..d35674ab8 100644 Binary files a/public/js/compose.js and b/public/js/compose.js differ diff --git a/public/js/profile.js b/public/js/profile.js index fa20e30ba..fabd70c96 100644 Binary files a/public/js/profile.js and b/public/js/profile.js differ diff --git a/public/js/quill.js b/public/js/quill.js index 9a7bf8092..67539e266 100644 Binary files a/public/js/quill.js and b/public/js/quill.js differ diff --git a/public/js/status.js b/public/js/status.js index 9d3c4a2fd..f258e68b8 100644 Binary files a/public/js/status.js and b/public/js/status.js differ diff --git a/public/js/timeline.js b/public/js/timeline.js index 8bab66b0c..4a1688d9f 100644 Binary files a/public/js/timeline.js and b/public/js/timeline.js differ diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 7b819126e..c4c2ed577 100644 Binary files a/public/mix-manifest.json and b/public/mix-manifest.json differ diff --git a/resources/assets/js/app.js b/resources/assets/js/app.js index b16d71c3b..4593326a4 100644 --- a/resources/assets/js/app.js +++ b/resources/assets/js/app.js @@ -18,4 +18,65 @@ window.App = window.App || {}; window.App.boot = function() { new Vue({ el: '#content'}); -} \ No newline at end of file +} + +window.App.util = { + time: (function() { + return new Date; + }), + version: (function() { + return 1; + }), + format: { + count: (function(count = 0) { + if(count < 1) { + return 0; + } + return new Intl.NumberFormat('en-GB', { notation: "compact" , compactDisplay: "short" }).format(count); + }) + }, + filters: [ + ['1977','filter-1977'], + ['Aden','filter-aden'], + ['Amaro','filter-amaro'], + ['Ashby','filter-ashby'], + ['Brannan','filter-brannan'], + ['Brooklyn','filter-brooklyn'], + ['Charmes','filter-charmes'], + ['Clarendon','filter-clarendon'], + ['Crema','filter-crema'], + ['Dogpatch','filter-dogpatch'], + ['Earlybird','filter-earlybird'], + ['Gingham','filter-gingham'], + ['Ginza','filter-ginza'], + ['Hefe','filter-hefe'], + ['Helena','filter-helena'], + ['Hudson','filter-hudson'], + ['Inkwell','filter-inkwell'], + ['Kelvin','filter-kelvin'], + ['Kuno','filter-juno'], + ['Lark','filter-lark'], + ['Lo-Fi','filter-lofi'], + ['Ludwig','filter-ludwig'], + ['Maven','filter-maven'], + ['Mayfair','filter-mayfair'], + ['Moon','filter-moon'], + ['Nashville','filter-nashville'], + ['Perpetua','filter-perpetua'], + ['Poprocket','filter-poprocket'], + ['Reyes','filter-reyes'], + ['Rise','filter-rise'], + ['Sierra','filter-sierra'], + ['Skyline','filter-skyline'], + ['Slumber','filter-slumber'], + ['Stinson','filter-stinson'], + ['Sutro','filter-sutro'], + ['Toaster','filter-toaster'], + ['Valencia','filter-valencia'], + ['Vesper','filter-vesper'], + ['Walden','filter-walden'], + ['Willow','filter-willow'], + ['X-Pro II','filter-xpro-ii'] + ], + emoji: ['๐Ÿ˜‚','๐Ÿ’ฏ','โค๏ธ','๐Ÿ™Œ','๐Ÿ‘','๐Ÿ‘Œ','๐Ÿ˜','๐Ÿ˜ฏ','๐Ÿ˜ข','๐Ÿ˜…','๐Ÿ˜','๐Ÿ™‚','๐Ÿ˜Ž','๐Ÿ˜€','๐Ÿคฃ','๐Ÿ˜ƒ','๐Ÿ˜„','๐Ÿ˜†','๐Ÿ˜‰','๐Ÿ˜Š','๐Ÿ˜‹','๐Ÿ˜˜','๐Ÿ˜—','๐Ÿ˜™','๐Ÿ˜š','๐Ÿค—','๐Ÿคฉ','๐Ÿค”','๐Ÿคจ','๐Ÿ˜','๐Ÿ˜‘','๐Ÿ˜ถ','๐Ÿ™„','๐Ÿ˜','๐Ÿ˜ฃ','๐Ÿ˜ฅ','๐Ÿ˜ฎ','๐Ÿค','๐Ÿ˜ช','๐Ÿ˜ซ','๐Ÿ˜ด','๐Ÿ˜Œ','๐Ÿ˜›','๐Ÿ˜œ','๐Ÿ˜','๐Ÿคค','๐Ÿ˜’','๐Ÿ˜“','๐Ÿ˜”','๐Ÿ˜•','๐Ÿ™ƒ','๐Ÿค‘','๐Ÿ˜ฒ','๐Ÿ™','๐Ÿ˜–','๐Ÿ˜ž','๐Ÿ˜Ÿ','๐Ÿ˜ค','๐Ÿ˜ญ','๐Ÿ˜ฆ','๐Ÿ˜ง','๐Ÿ˜จ','๐Ÿ˜ฉ','๐Ÿคฏ','๐Ÿ˜ฌ','๐Ÿ˜ฐ','๐Ÿ˜ฑ','๐Ÿ˜ณ','๐Ÿคช','๐Ÿ˜ต','๐Ÿ˜ก','๐Ÿ˜ ','๐Ÿคฌ','๐Ÿ˜ท','๐Ÿค’','๐Ÿค•','๐Ÿคข','๐Ÿคฎ','๐Ÿคง','๐Ÿ˜‡','๐Ÿค ','๐Ÿคก','๐Ÿคฅ','๐Ÿคซ','๐Ÿคญ','๐Ÿง','๐Ÿค“','๐Ÿ˜ˆ','๐Ÿ‘ฟ','๐Ÿ‘น','๐Ÿ‘บ','๐Ÿ’€','๐Ÿ‘ป','๐Ÿ‘ฝ','๐Ÿค–','๐Ÿ’ฉ','๐Ÿ˜บ','๐Ÿ˜ธ','๐Ÿ˜น','๐Ÿ˜ป','๐Ÿ˜ผ','๐Ÿ˜ฝ','๐Ÿ™€','๐Ÿ˜ฟ','๐Ÿ˜พ','๐Ÿคฒ','๐Ÿ‘','๐Ÿค','๐Ÿ‘','๐Ÿ‘Ž','๐Ÿ‘Š','โœŠ','๐Ÿค›','๐Ÿคœ','๐Ÿคž','โœŒ๏ธ','๐ŸคŸ','๐Ÿค˜','๐Ÿ‘ˆ','๐Ÿ‘‰','๐Ÿ‘†','๐Ÿ‘‡','โ˜๏ธ','โœ‹','๐Ÿคš','๐Ÿ–','๐Ÿ––','๐Ÿ‘‹','๐Ÿค™','๐Ÿ’ช','๐Ÿ–•','โœ๏ธ','๐Ÿ™','๐Ÿ’','๐Ÿ’„','๐Ÿ’‹','๐Ÿ‘„','๐Ÿ‘…','๐Ÿ‘‚','๐Ÿ‘ƒ','๐Ÿ‘ฃ','๐Ÿ‘','๐Ÿ‘€','๐Ÿง ','๐Ÿ—ฃ','๐Ÿ‘ค','๐Ÿ‘ฅ'], +}; \ No newline at end of file diff --git a/resources/assets/js/components.js b/resources/assets/js/components.js index 026b496fe..fd1954aff 100644 --- a/resources/assets/js/components.js +++ b/resources/assets/js/components.js @@ -3,7 +3,9 @@ import BootstrapVue from 'bootstrap-vue' import InfiniteLoading from 'vue-infinite-loading'; import Loading from 'vue-loading-overlay'; import VueTimeago from 'vue-timeago'; +import VueCarousel from 'vue-carousel'; +Vue.use(VueCarousel); Vue.use(BootstrapVue); Vue.use(InfiniteLoading); Vue.use(Loading); @@ -37,11 +39,7 @@ try { window.filesize = require('filesize'); import swal from 'sweetalert'; -$(document).ready(function() { - $(function () { - $('[data-toggle="tooltip"]').tooltip() - }); -}); +$('[data-toggle="tooltip"]').tooltip() const warningTitleCSS = 'color:red; font-size:60px; font-weight: bold; -webkit-text-stroke: 1px black;'; const warningDescCSS = 'font-size: 18px;'; diff --git a/resources/assets/js/components/CollectionCompose.vue b/resources/assets/js/components/CollectionCompose.vue index 7ba4cb1d3..cf7b50685 100644 --- a/resources/assets/js/components/CollectionCompose.vue +++ b/resources/assets/js/components/CollectionCompose.vue @@ -201,7 +201,7 @@ export default { }, fetchRecentPosts() { - axios.get('/api/local/accounts/' + this.profileId + '/statuses', { + axios.get('/api/pixelfed/v1/accounts/' + this.profileId + '/statuses', { params: { only_media: true, min_id: 1, diff --git a/resources/assets/js/components/ComposeModal.vue b/resources/assets/js/components/ComposeModal.vue index 911e8bca3..a9463d601 100644 --- a/resources/assets/js/components/ComposeModal.vue +++ b/resources/assets/js/components/ComposeModal.vue @@ -1,15 +1,45 @@