From ec51ae832eea9ef98222824ad573cbc56bf29ecd Mon Sep 17 00:00:00 2001 From: okpierre <1679025+okpierre@users.noreply.github.com> Date: Wed, 11 Sep 2019 01:00:24 -0400 Subject: [PATCH 01/63] Update CHANGELOG.md Added additional links to pull requests --- CHANGELOG.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b5d230f9..3316868d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ ### Changed - Updated EmailService, added new domains [#1690](https://github.com/pixelfed/pixelfed/pull/1690) -- Updated quill.js to v1.3.7 [#1692](https://github.com/pixelfed/pixelfed/pull/1690) +- Updated quill.js to v1.3.7 [#1692](https://github.com/pixelfed/pixelfed/pull/1692) ## [v0.10.3 (2019-09-08)](https://github.com/pixelfed/pixelfed/compare/v0.10.2...v0.10.3) @@ -36,7 +36,7 @@ ### Fixed -- Typo in Inbox prevented proper federation support +- Typo in Inbox prevented proper federation support [#1664](https://github.com/pixelfed/pixelfed/pull/1664) ## [v0.10.1 (2019-09-06)](https://github.com/pixelfed/pixelfed/compare/v0.10.0...v0.10.1) @@ -46,19 +46,19 @@ - Compose UI v4: a rework of the v3 flow to allow basic cropping and better support future post types - Profile badges show if a user is following you or is an admin - Show confirmation message when muting or blocking a user from a post -- Allow "read more" to be disabled on posts +- Allow "read more" to be disabled on posts [#1545](https://github.com/pixelfed/pixelfed/pull/1545) - Loops! Discover short videos - Preliminary support for profile PropertyValue metadata - Preliminary support for Direct Messages - Places! Run the artisan task `import:cities` - Emails are now validated and banned email domains are disallowed at signup. Artisan task `email:bancheck` will validate existing users. -- .env vars `REDIS_SCHEME` and `REDIS_PATH` allow for using Redis over a Unix socket instead of TCP +- .env vars `REDIS_SCHEME` and `REDIS_PATH` allow for using Redis over a Unix socket instead of TCP [#1602](https://github.com/pixelfed/pixelfed/pull/1602) - .env var `IMAGE_DRIVER` allows using imagick instead of gd ### Fixed -- Show delete button while composing video posts +- Show delete button while composing video posts [#1529](https://github.com/pixelfed/pixelfed/pull/1529) - Show pending follow requests on private profiles -- Allow muted users to comment on your posts +- Allow muted users to comment on your posts [#1537](https://github.com/pixelfed/pixelfed/pull/1537) - Bugs with carousel cursor and tooltips - Collections can now be deleted from collection page - Compose modal now indicates album media limits @@ -66,7 +66,7 @@ - Don't show Register link in navbar when registrations are closed ### Changed -- Use vue-masonry for Moment UI layout +- Use vue-masonry for Moment UI layout [#1536](https://github.com/pixelfed/pixelfed/pull/1536) - User post limit changed from 20/hr to 50/hr - Better mobile profile layout - Dark mode is now a bit bluer @@ -78,17 +78,17 @@ ## [v0.10.0 (2019-07-17)](https://github.com/pixelfed/pixelfed/compare/v0.9.6...v0.10.0) ### Added -- Collections! Add posts to Collections, similar to categories. -- Profile donate links: add links to Patreon, Liberapay, and OpenCollective on your profile +- Collections! Add posts to Collections, similar to categories. [#1511](https://github.com/pixelfed/pixelfed/pull/1511) +- Profile donate links: add links to Patreon, Liberapay, and OpenCollective on your profile [#1500](https://github.com/pixelfed/pixelfed/pull/1500) ### Fixed - Show correct mode when viewing followers / following ### Changed -- Profile model now uses snowflake id +- Profile model now uses snowflake id [#1502](https://github.com/pixelfed/pixelfed/pull/1502) ### Removed -- OStatus legacy code has been removed +- OStatus legacy code has been removed [#1510](https://github.com/pixelfed/pixelfed/pull/1510) ## [v0.9.6 (2019-07-10)](https://github.com/pixelfed/pixelfed/compare/v0.9.5...v0.9.6) From 49ed4ac00a84aec3eae529cdb92f11b9398c1ef8 Mon Sep 17 00:00:00 2001 From: Trevor Farlow Date: Fri, 13 Sep 2019 10:39:17 -0600 Subject: [PATCH 02/63] Default word-break styling on post comments --- resources/assets/js/components/PostComponent.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/assets/js/components/PostComponent.vue b/resources/assets/js/components/PostComponent.vue index b5316e314..5c2cd222b 100644 --- a/resources/assets/js/components/PostComponent.vue +++ b/resources/assets/js/components/PostComponent.vue @@ -370,7 +370,7 @@ {{timeAgo(reply.created_at)}} -

+

{ + axios.get('/api/pixelfed/v1/accounts/verify_credentials').then(res => { this.profile = res.data; if(this.profile.is_admin == true) { this.modes.mod = true; @@ -652,15 +588,15 @@ let apiUrl = false; switch(this.scope) { case 'home': - apiUrl = '/api/v1/timelines/home'; + apiUrl = '/api/pixelfed/v1/timelines/home'; break; case 'local': - apiUrl = '/api/v1/timelines/public'; + apiUrl = '/api/pixelfed/v1/timelines/public'; break; case 'network': - apiUrl = '/api/v1/timelines/network'; + apiUrl = '/api/pixelfed/v1/timelines/network'; break; } axios.get(apiUrl, { @@ -695,15 +631,15 @@ let apiUrl = false; switch(this.scope) { case 'home': - apiUrl = '/api/v1/timelines/home'; + apiUrl = '/api/pixelfed/v1/timelines/home'; break; case 'local': - apiUrl = '/api/v1/timelines/public'; + apiUrl = '/api/pixelfed/v1/timelines/public'; break; case 'network': - apiUrl = '/api/v1/timelines/network'; + apiUrl = '/api/pixelfed/v1/timelines/network'; break; } axios.get(apiUrl, { @@ -736,8 +672,8 @@ }, loadMore(event) { - let homeTimeline = '/api/v1/timelines/home'; - let localTimeline = '/api/v1/timelines/public'; + let homeTimeline = '/api/pixelfed/v1/timelines/home'; + let localTimeline = '/api/pixelfed/v1/timelines/public'; let apiUrl = this.scope == 'home' ? homeTimeline : localTimeline; event.target.innerText = 'Loading...'; axios.get(apiUrl, { @@ -1068,7 +1004,7 @@ this.$refs.followingModal.show(); return; } - axios.get('/api/v1/accounts/'+this.profile.id+'/following', { + axios.get('/api/pixelfed/v1/accounts/'+this.profile.id+'/following', { params: { page: this.followingCursor } @@ -1088,7 +1024,7 @@ this.$refs.followerModal.show(); return; } - axios.get('/api/v1/accounts/'+this.profile.id+'/followers', { + axios.get('/api/pixelfed/v1/accounts/'+this.profile.id+'/followers', { params: { page: this.followerCursor } @@ -1104,7 +1040,7 @@ }, followingLoadMore() { - axios.get('/api/v1/accounts/'+this.profile.id+'/following', { + axios.get('/api/pixelfed/v1/accounts/'+this.profile.id+'/following', { params: { page: this.followingCursor } @@ -1121,7 +1057,7 @@ }, followersLoadMore() { - axios.get('/api/v1/accounts/'+this.profile.id+'/followers', { + axios.get('/api/pixelfed/v1/accounts/'+this.profile.id+'/followers', { params: { page: this.followerCursor } @@ -1297,7 +1233,7 @@ if(status.account.id == this.profile.id) { this.$refs.ctxModal.show(); } else { - axios.get('/api/v1/accounts/relationships', { + axios.get('/api/pixelfed/v1/accounts/relationships', { params: { 'id[]': status.account.id } From 0dd4f1f9cdbbe6ff3b0b07082e8ba1f6984d02fa Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sun, 15 Sep 2019 18:44:32 -0600 Subject: [PATCH 12/63] Update web routes --- routes/web.php | 57 ++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 44 insertions(+), 13 deletions(-) diff --git a/routes/web.php b/routes/web.php index d4090361a..25241ac1b 100644 --- a/routes/web.php +++ b/routes/web.php @@ -77,19 +77,19 @@ Route::domain(config('pixelfed.domain.app'))->middleware(['validemail', 'twofact Route::get('nodeinfo/2.0.json', 'FederationController@nodeinfo'); Route::group(['prefix' => 'v1'], function () { - Route::get('accounts/verify_credentials', 'ApiController@verifyCredentials'); - Route::get('accounts/relationships', 'PublicApiController@relationships'); - Route::get('accounts/{id}/statuses', 'PublicApiController@accountStatuses'); - Route::get('accounts/{id}/following', 'PublicApiController@accountFollowing'); - Route::get('accounts/{id}/followers', 'PublicApiController@accountFollowers'); - Route::get('accounts/{id}', 'PublicApiController@account'); - Route::post('avatar/update', 'ApiController@avatarUpdate'); - Route::get('likes', 'ApiController@hydrateLikes'); - Route::post('media', 'ApiController@uploadMedia'); - Route::delete('media', 'ApiController@deleteMedia'); - Route::get('notifications', 'ApiController@notifications'); - Route::get('timelines/public', 'PublicApiController@publicTimelineApi'); - Route::get('timelines/home', 'PublicApiController@homeTimelineApi'); + // Route::get('accounts/verify_credentials', 'ApiController@verifyCredentials'); + // Route::get('accounts/relationships', 'PublicApiController@relationships'); + // Route::get('accounts/{id}/statuses', 'PublicApiController@accountStatuses'); + // Route::get('accounts/{id}/following', 'PublicApiController@accountFollowing'); + // Route::get('accounts/{id}/followers', 'PublicApiController@accountFollowers'); + // Route::get('accounts/{id}', 'PublicApiController@account'); + // Route::post('avatar/update', 'ApiController@avatarUpdate'); + // Route::get('likes', 'ApiController@hydrateLikes'); + // Route::post('media', 'ApiController@uploadMedia'); + // Route::delete('media', 'ApiController@deleteMedia'); + // Route::get('notifications', 'ApiController@notifications'); + // Route::get('timelines/public', 'PublicApiController@publicTimelineApi'); + // Route::get('timelines/home', 'PublicApiController@homeTimelineApi'); }); Route::group(['prefix' => 'v2'], function() { Route::get('config', 'ApiController@siteConfiguration'); @@ -107,7 +107,38 @@ Route::domain(config('pixelfed.domain.app'))->middleware(['validemail', 'twofact Route::get('discover/tag', 'DiscoverController@getHashtags'); Route::post('status/compose', 'InternalApiController@composePost')->middleware('throttle:maxPostsPerHour,60')->middleware('throttle:maxPostsPerDay,1440'); }); + Route::group(['prefix' => 'pixelfed'], function() { + Route::group(['prefix' => 'v1'], function() { + Route::get('accounts/verify_credentials', 'ApiController@verifyCredentials'); + Route::get('accounts/relationships', 'PublicApiController@relationships'); + Route::get('accounts/{id}/statuses', 'PublicApiController@accountStatuses'); + Route::get('accounts/{id}/following', 'PublicApiController@accountFollowing'); + Route::get('accounts/{id}/followers', 'PublicApiController@accountFollowers'); + Route::get('accounts/{id}', 'PublicApiController@account'); + Route::post('avatar/update', 'ApiController@avatarUpdate'); + Route::get('likes', 'ApiController@hydrateLikes'); + Route::post('media', 'ApiController@uploadMedia'); + Route::delete('media', 'ApiController@deleteMedia'); + Route::get('notifications', 'ApiController@notifications'); + Route::get('timelines/public', 'PublicApiController@publicTimelineApi'); + Route::get('timelines/home', 'PublicApiController@homeTimelineApi'); + }); + }); Route::group(['prefix' => 'local'], function () { + // Route::get('accounts/verify_credentials', 'ApiController@verifyCredentials'); + // Route::get('accounts/relationships', 'PublicApiController@relationships'); + // Route::get('accounts/{id}/statuses', 'PublicApiController@accountStatuses'); + // Route::get('accounts/{id}/following', 'PublicApiController@accountFollowing'); + // Route::get('accounts/{id}/followers', 'PublicApiController@accountFollowers'); + // Route::get('accounts/{id}', 'PublicApiController@account'); + // Route::post('avatar/update', 'ApiController@avatarUpdate'); + // Route::get('likes', 'ApiController@hydrateLikes'); + // Route::post('media', 'ApiController@uploadMedia'); + // Route::delete('media', 'ApiController@deleteMedia'); + // Route::get('notifications', 'ApiController@notifications'); + // Route::get('timelines/public', 'PublicApiController@publicTimelineApi'); + // Route::get('timelines/home', 'PublicApiController@homeTimelineApi'); + Route::post('status/compose', 'InternalApiController@composePost')->middleware('throttle:maxPostsPerHour,60')->middleware('throttle:maxPostsPerDay,1440'); Route::get('exp/rec', 'ApiController@userRecommendations'); Route::post('discover/tag/subscribe', 'HashtagFollowController@store')->middleware('throttle:maxHashtagFollowsPerHour,60')->middleware('throttle:maxHashtagFollowsPerDay,1440');; From 56a98a8ecbbb6ab505771d9e642b4759f6171e11 Mon Sep 17 00:00:00 2001 From: mynameismonkey <3419832+mynameismonkey@users.noreply.github.com> Date: Mon, 16 Sep 2019 13:27:52 -0400 Subject: [PATCH 13/63] Create auth.php Welsh translation / cyfieithiad Cymraeg --- resources/lang/cy/auth.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 resources/lang/cy/auth.php diff --git a/resources/lang/cy/auth.php b/resources/lang/cy/auth.php new file mode 100644 index 000000000..a23ff930f --- /dev/null +++ b/resources/lang/cy/auth.php @@ -0,0 +1,15 @@ + 'Nid yw'r manylion mewngofnodi hyn yn cyd-fynd â'n cofnodion.', + 'throttle' => 'Gormod o ymdrechion mewngofnodi. Rhowch gynnig arall arni mewn :seconds eiliadau.', +]; From 1fc07be83c4bbd3656c66fd3f06c972d1b8bbe56 Mon Sep 17 00:00:00 2001 From: mynameismonkey <3419832+mynameismonkey@users.noreply.github.com> Date: Mon, 16 Sep 2019 13:38:55 -0400 Subject: [PATCH 14/63] Create helpcenter.php Welsh translation / cyfieithiad Cymraeg --- resources/lang/cy/helpcenter.php | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 resources/lang/cy/helpcenter.php diff --git a/resources/lang/cy/helpcenter.php b/resources/lang/cy/helpcenter.php new file mode 100644 index 000000000..ec5d6ed53 --- /dev/null +++ b/resources/lang/cy/helpcenter.php @@ -0,0 +1,23 @@ + 'Canolfan Cymorth', + 'whatsnew' => 'Beth Sy\'n Newydd', + + 'gettingStarted' => 'Cychwyn Arni', + 'sharingMedia' => 'Rhannu Cyfryngau', + 'profile' => 'Proffil', + 'stories' => 'Straeon', + 'hashtags' => 'Hashnodau', + 'discover' => 'Darganfod', + 'directMessages' => 'Negeseuon Uniongyrchol', + 'timelines' => 'Llinellau Amser', + 'embed' => 'Gwreiddio', + + 'communityGuidelines' => 'Canllawiau Cymunedol', + 'whatIsTheFediverse' => 'Beth yw\'r Fediverse?', + 'controllingVisibility' => 'Rheoli Gwelededd', + 'blockingAccounts' => 'Cyfrifon Blocio', + 'safetyTips' => 'Awgrymiadau Diogelwch', + 'reportSomething' => 'Riportio Rhywbeth', + 'dataPolicy' => 'Polisi Data' +]; From f18794c4d4c288720dc4a4e7fc287f7bf4c1375d Mon Sep 17 00:00:00 2001 From: mynameismonkey <3419832+mynameismonkey@users.noreply.github.com> Date: Mon, 16 Sep 2019 13:39:19 -0400 Subject: [PATCH 15/63] Update auth.php --- resources/lang/cy/auth.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/lang/cy/auth.php b/resources/lang/cy/auth.php index a23ff930f..09222a0ec 100644 --- a/resources/lang/cy/auth.php +++ b/resources/lang/cy/auth.php @@ -10,6 +10,6 @@ return [ | these language lines according to your application's requirements. | */ - 'failed' => 'Nid yw'r manylion mewngofnodi hyn yn cyd-fynd â'n cofnodion.', + 'failed' => 'Nid yw\'r manylion mewngofnodi hyn yn cyd-fynd â\'n cofnodion.', 'throttle' => 'Gormod o ymdrechion mewngofnodi. Rhowch gynnig arall arni mewn :seconds eiliadau.', ]; From a2fdb14d20a242d6230879a4e97fecb3659f83ad Mon Sep 17 00:00:00 2001 From: mynameismonkey <3419832+mynameismonkey@users.noreply.github.com> Date: Mon, 16 Sep 2019 14:07:04 -0400 Subject: [PATCH 16/63] Welsh translation / cyfieithiad Cymraeg --- resources/lang/cy/navmenu.php | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 resources/lang/cy/navmenu.php diff --git a/resources/lang/cy/navmenu.php b/resources/lang/cy/navmenu.php new file mode 100644 index 000000000..63bfadc5d --- /dev/null +++ b/resources/lang/cy/navmenu.php @@ -0,0 +1,20 @@ + 'Chwilio', + 'home' => 'Hafan', + 'local' => 'Lleol', + 'network' => 'Rhwydwaith', + 'discover' => 'Darganfod', + 'viewMyProfile' => 'Gweld fy mhroffil', + 'myProfile' => 'Fy Mhroffil', + 'myTimeline' => 'Fy Llinell Amser', + 'publicTimeline' => 'Llinell Amser Gyhoeddus', + 'remoteFollow' => 'Dilyn o Bell', + 'settings' => 'Gosodiadau', + 'admin' => 'Admin', + 'logout' => 'Allgofnodi', + 'directMessages' => 'Negeseuon Uniongyrchol', + +]; From 5dc0dbe22e583c370a621d9befaeb6e5e4eb0428 Mon Sep 17 00:00:00 2001 From: mynameismonkey <3419832+mynameismonkey@users.noreply.github.com> Date: Mon, 16 Sep 2019 14:07:25 -0400 Subject: [PATCH 17/63] Welsh translation / cyfieithiad Cymraeg --- resources/lang/cy/auth.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/resources/lang/cy/auth.php b/resources/lang/cy/auth.php index 09222a0ec..fc39b076b 100644 --- a/resources/lang/cy/auth.php +++ b/resources/lang/cy/auth.php @@ -1,5 +1,7 @@ 'Nid yw\'r manylion mewngofnodi hyn yn cyd-fynd â\'n cofnodion.', 'throttle' => 'Gormod o ymdrechion mewngofnodi. Rhowch gynnig arall arni mewn :seconds eiliadau.', + ]; From 0c3c049a4ff56bb295c0ee4b5f8f0126c19c8802 Mon Sep 17 00:00:00 2001 From: mynameismonkey <3419832+mynameismonkey@users.noreply.github.com> Date: Mon, 16 Sep 2019 14:07:43 -0400 Subject: [PATCH 18/63] Welsh translation / cyfieithiad Cymraeg --- resources/lang/cy/helpcenter.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/resources/lang/cy/helpcenter.php b/resources/lang/cy/helpcenter.php index ec5d6ed53..b83a5dd0d 100644 --- a/resources/lang/cy/helpcenter.php +++ b/resources/lang/cy/helpcenter.php @@ -1,5 +1,7 @@ 'Canolfan Cymorth', 'whatsnew' => 'Beth Sy\'n Newydd', @@ -20,4 +22,5 @@ return [ 'safetyTips' => 'Awgrymiadau Diogelwch', 'reportSomething' => 'Riportio Rhywbeth', 'dataPolicy' => 'Polisi Data' + ]; From 0d352c888413530a1fe16e46e52fe55282186a1b Mon Sep 17 00:00:00 2001 From: mynameismonkey <3419832+mynameismonkey@users.noreply.github.com> Date: Mon, 16 Sep 2019 15:46:37 -0400 Subject: [PATCH 19/63] Welsh translation / cyfieithiad Cymraeg --- resources/lang/cy/notification.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 resources/lang/cy/notification.php diff --git a/resources/lang/cy/notification.php b/resources/lang/cy/notification.php new file mode 100644 index 000000000..7fc3efa25 --- /dev/null +++ b/resources/lang/cy/notification.php @@ -0,0 +1,12 @@ + 'wedi hoffi eich post.', + 'likedComment' => 'wedi hoffi eich sylw.', + 'startedFollowingYou' => 'wedi dechrau eich dilyn .', + 'commented' => 'gwnaeth sylwadau ar eich swydd.', + 'mentionedYou' => 'soniodd amdanoch chi.', + 'shared' => 'wedi rhannu eich post.', + +]; From e8756ccf2b2370325af5d47bae7427f56464efb0 Mon Sep 17 00:00:00 2001 From: mynameismonkey <3419832+mynameismonkey@users.noreply.github.com> Date: Mon, 16 Sep 2019 15:48:26 -0400 Subject: [PATCH 20/63] Welsh translation / cyfieithiad Cymraeg --- resources/lang/cy/pagination.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 resources/lang/cy/pagination.php diff --git a/resources/lang/cy/pagination.php b/resources/lang/cy/pagination.php new file mode 100644 index 000000000..d3297058a --- /dev/null +++ b/resources/lang/cy/pagination.php @@ -0,0 +1,19 @@ + '« Blaenorol', + 'next' => 'Nesaf »', + +]; From b9d5a076052db7f2a1a8bd34b89dbd49762e73d3 Mon Sep 17 00:00:00 2001 From: mynameismonkey <3419832+mynameismonkey@users.noreply.github.com> Date: Mon, 16 Sep 2019 15:52:02 -0400 Subject: [PATCH 21/63] Welsh translation / cyfieithiad Cymraeg --- resources/lang/cy/passwords.php | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 resources/lang/cy/passwords.php diff --git a/resources/lang/cy/passwords.php b/resources/lang/cy/passwords.php new file mode 100644 index 000000000..7421ec85b --- /dev/null +++ b/resources/lang/cy/passwords.php @@ -0,0 +1,22 @@ + 'Rhaid i\'r cyfrineiriau fod o leiaf chwe nod ac yn cyfateb i\'r cadarnhad.', + 'reset' => 'Mae eich cyfrinair wedi\'i ailosod!', + 'sent' => 'Os yw\'ch cyfeiriad e-bost yn bodoli yn ein cronfa ddata, byddwch yn derbyn dolen adfer cyfrinair yn eich cyfeiriad e-bost mewn ychydig funudau. Gwiriwch eich ffolder sbam os na dderbynioch yr e-bost hwn.', + 'token' => 'Mae\'r tocyn ailosod cyfrinair hwn yn annilys.', + 'user' => 'Os yw\'ch cyfeiriad e-bost yn bodoli yn ein cronfa ddata, byddwch yn derbyn dolen adfer cyfrinair yn eich cyfeiriad e-bost mewn ychydig funudau. Gwiriwch eich ffolder sbam os na dderbynioch yr e-bost hwn.', + +]; From 74450d3ea7fa78a69a167e10c677fc75d72f02b8 Mon Sep 17 00:00:00 2001 From: mynameismonkey <3419832+mynameismonkey@users.noreply.github.com> Date: Mon, 16 Sep 2019 16:03:06 -0400 Subject: [PATCH 22/63] Welsh translation / cyfieithiad Cymraeg --- resources/lang/cy/profile.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 resources/lang/cy/profile.php diff --git a/resources/lang/cy/profile.php b/resources/lang/cy/profile.php new file mode 100644 index 000000000..558a25c80 --- /dev/null +++ b/resources/lang/cy/profile.php @@ -0,0 +1,17 @@ + 'Nid oes gan y defnyddiwr hwn swyddi eto!', + 'emptyFollowers' => 'Nid oes gan y defnyddiwr hwn ddilynwyr eto!', + 'emptyFollowing' => 'Nid yw\'r defnyddiwr hwn yn dilyn unrhyw un eto!', + 'emptySaved' => 'Nid ydych wedi arbed unrhyw bostiadau eto!', + 'savedWarning' => 'Dim ond chi sy\'n gallu gweld beth rydych chi wedi\'i arbed', + 'privateProfileWarning' => 'Mae'r Cyfrif hwn yn Breifat', + 'alreadyFollow' => 'Eisoes yn dilyn :username?', + 'loginToSeeProfile' => 'i weld eu lluniau a\'u fideos.', + + 'status.disabled.header' => 'Proffil Ddim ar Gael', + 'status.disabled.body' => 'Mae\'n ddrwg gennym, nid yw\'r proffil hwn ar gael ar hyn o bryd. Rhowch gynnig arall arni cyn bo hir.', + +]; From 9adcf86d98d60e8a629403866e36446542fe5101 Mon Sep 17 00:00:00 2001 From: mynameismonkey <3419832+mynameismonkey@users.noreply.github.com> Date: Mon, 16 Sep 2019 16:10:15 -0400 Subject: [PATCH 23/63] Welsh translation / cyfieithiad Cymraeg --- resources/lang/cy/site.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 resources/lang/cy/site.php diff --git a/resources/lang/cy/site.php b/resources/lang/cy/site.php new file mode 100644 index 000000000..0d806ef3b --- /dev/null +++ b/resources/lang/cy/site.php @@ -0,0 +1,18 @@ + 'Amdamon', + 'help' => 'Help', + 'language' => 'Iaith', + 'fediverse' => 'Ffedirasiwn', + 'opensource' => 'Ffynhonnell Agor', + 'terms' => 'Termau', + 'privacy' => 'Preifatrwydd', + 'l10nWip' => 'Rydym yn dal i weithio ar gymorth lleoleiddio', + 'currentLocale' => 'Locale Cyfredol', + 'selectLocale' => 'Dewiswch un o\'r ieithoedd a gefnogir', + 'contact' => 'Cysylltu', + 'contact-us' => 'Cysylltu â Ni', + +]; From cd8938aef3c558b7f3ebfd179dedc462648c834b Mon Sep 17 00:00:00 2001 From: mynameismonkey <3419832+mynameismonkey@users.noreply.github.com> Date: Mon, 16 Sep 2019 16:11:31 -0400 Subject: [PATCH 24/63] Welsh translation / cyfieithiad Cymraeg --- resources/lang/cy/timeline.php | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 resources/lang/cy/timeline.php diff --git a/resources/lang/cy/timeline.php b/resources/lang/cy/timeline.php new file mode 100644 index 000000000..fed7b6c99 --- /dev/null +++ b/resources/lang/cy/timeline.php @@ -0,0 +1,7 @@ + 'Mae eich llinell amser yn wag.', + +]; From e55efca06ef13fdc4ed41f80b9a0df7a3d6a36ea Mon Sep 17 00:00:00 2001 From: mynameismonkey <3419832+mynameismonkey@users.noreply.github.com> Date: Mon, 16 Sep 2019 16:42:09 -0400 Subject: [PATCH 25/63] Welsh translation / cyfieithiad Cymraeg --- resources/lang/cy/validation.php | 122 +++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 resources/lang/cy/validation.php diff --git a/resources/lang/cy/validation.php b/resources/lang/cy/validation.php new file mode 100644 index 000000000..c266a0996 --- /dev/null +++ b/resources/lang/cy/validation.php @@ -0,0 +1,122 @@ + 'Rhaid derbyn y :attribute.', + 'active_url' => 'Nid yw\'r :attribute yn URL dilys.', + 'after' => 'Rhaid i\'r :attribute fod yn ddyddiad ar ôl :date.', + 'after_or_equal' => 'Rhaid i\'r :attribute fod yn ddyddiad ar ôl neu\'n hafal i :date.', + 'alpha' => 'Dim ond llythyrau y gall y :attribute eu cynnwys.', + 'alpha_dash' => 'Dim ond llythrennau, rhifau a thaenau y gall y :attribute eu cynnwys.', + 'alpha_num' => 'Dim ond llythrennau a rhifau y gall y :attribute eu cynnwys.', + 'array' => 'Rhaid i\'r :attribute fod yn arae.', + 'before' => 'Rhaid i\'r :attribute fod yn ddyddiad cyn :date.', + 'before_or_equal' => 'Rhaid i\'r :attribute fod yn ddyddiad cyn neu'n hafal i :date.', + 'between' => [ + 'numeric' => 'Rhaid i\'r :attribute fod rhwng :min a :max.', + 'file' => 'Rhaid i\'r :attribute fod rhwng :min a :max cilobytes.', + 'string' => 'Rhaid i\'r :attribute fod rhwng :min a :max nodau.', + 'array' => 'Rhaid i\'r :attribute fod rhwng :min a :max eitem.', + ], + 'boolean' => 'Rhaid i\'r maes :attribute fod yn wir neu\'n anwir.', + 'confirmed' => 'Nid yw\'r cadarnhad :attribute yn cyfateb.', + 'date' => 'Nid yw\'r :attribute yn ddyddiad dilys.', + 'date_format' => 'Nid yw\'r :attribute yn cyd-fynd â\'r fformat :format.', + 'different' => 'Rhaid i\'r :attribute a'r :other fod yn wahanol.', + 'digits' => 'Rhaid i\'r :attribute fod yn :digits digid.', + 'digits_between' => 'Rhaid i\'r :attribute fod rhwng :min a :max digid.', + 'dimensions' => 'Mae gan y :attribute ddimensiynau delwedd annilys.', + 'distinct' => 'Mae gan y maes :attribute werthoedd dyblyg.', + 'email' => 'Rhaid i\'r :attribute fod yn gyfeiriad e-bost dilys.', + 'exists' => 'Mae\'r :attribute a ddewiswyd yn annilys.', + 'file' => 'Rhaid i\'r :attribute fod yn ffeil.', + 'filled' => 'Rhaid bod gwerth i\'r maes :attribute.', + 'image' => 'Rhaid i\'r :attribute fod yn ddelwedd.', + 'in' => 'Mae\'r :attribute a ddewiswyd yn annilys.', + 'in_array' => 'Nid yw\'r maes :attribute yn bodoli yn :other.', + 'integer' => 'Rhaid i\'r :attribute fod yn gyfanrif.', + 'ip' => 'Rhaid i\'r :attribute fod yn gyfeiriad IP dilys.', + 'ipv4' => 'Rhaid i\'r :attribute fod yn gyfeiriad IPv4 dilys.', + 'ipv6' => 'Rhaid i\'r :attribute fod yn gyfeiriad IPv6 dilys.', + 'json' => 'Rhaid i\'r :attribute fod yn llinyn JSON dilys.', + 'max' => [ + 'numeric' => 'Efallai na fydd y :attribute yn fwy na :max.', + 'file' => 'Efallai na fydd y :attribute yn fwy na :max cilobytes.', + 'string' => 'Efallai na fydd y :attribute yn fwy na :max nodau.', + 'array' => 'Efallai na fydd y :attribute yn fwy na :max eitem.', + ], + 'mimes' => 'Rhaid i\'r :attribute fod yn ffeil o fath: :values.', + 'mimetypes' => 'Rhaid i\'r :attribute fod yn ffeil o fath: :values.', + 'min' => [ + 'numeric' => 'Rhaid i\'r :attribute fod o leiaf :min.', + 'file' => 'Rhaid i\'r :attribute fod o leiaf :min cilobytes.', + 'string' => 'Rhaid i\'r :attribute fod o leiaf :min nodau.', + 'array' => 'Rhaid i\'r :attribute fod o leiaf :min eitem.', + ], + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute format is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => ':attribute rhaid bod :size.', + 'file' => ':attribute rhaid bod :size cilobytes.', + 'string' => ':attribute rhaid bod :size nodau.', + 'array' => ':attribute rhaid bod :size eitem.', + ], + 'string' => ':attribute rhaid fod yn llinyn.', + 'timezone' => ':attribute rhaid fod yn barth dilys.', + 'unique' => ':attribute eisoes wedi\'u cymryd.', + 'uploaded' => ':attribute wedi methu llwytho i fyny.', + 'url' => ':attribute fformat yn annilys.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'custom-message', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + +]; From 28dafdc767c421e19d32ce0b4d58593159643d70 Mon Sep 17 00:00:00 2001 From: mynameismonkey <3419832+mynameismonkey@users.noreply.github.com> Date: Mon, 16 Sep 2019 16:43:02 -0400 Subject: [PATCH 26/63] Update profile.php --- resources/lang/cy/profile.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/lang/cy/profile.php b/resources/lang/cy/profile.php index 558a25c80..d97396b5b 100644 --- a/resources/lang/cy/profile.php +++ b/resources/lang/cy/profile.php @@ -7,7 +7,7 @@ return [ 'emptyFollowing' => 'Nid yw\'r defnyddiwr hwn yn dilyn unrhyw un eto!', 'emptySaved' => 'Nid ydych wedi arbed unrhyw bostiadau eto!', 'savedWarning' => 'Dim ond chi sy\'n gallu gweld beth rydych chi wedi\'i arbed', - 'privateProfileWarning' => 'Mae'r Cyfrif hwn yn Breifat', + 'privateProfileWarning' => 'Mae\'r Cyfrif hwn yn Breifat', 'alreadyFollow' => 'Eisoes yn dilyn :username?', 'loginToSeeProfile' => 'i weld eu lluniau a\'u fideos.', From 0ffe06748411b910ce52b6627d5c5bf92c8db637 Mon Sep 17 00:00:00 2001 From: mynameismonkey <3419832+mynameismonkey@users.noreply.github.com> Date: Mon, 16 Sep 2019 16:44:16 -0400 Subject: [PATCH 27/63] Update validation.php --- resources/lang/cy/validation.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/lang/cy/validation.php b/resources/lang/cy/validation.php index c266a0996..d661cccb6 100644 --- a/resources/lang/cy/validation.php +++ b/resources/lang/cy/validation.php @@ -22,7 +22,7 @@ return [ 'alpha_num' => 'Dim ond llythrennau a rhifau y gall y :attribute eu cynnwys.', 'array' => 'Rhaid i\'r :attribute fod yn arae.', 'before' => 'Rhaid i\'r :attribute fod yn ddyddiad cyn :date.', - 'before_or_equal' => 'Rhaid i\'r :attribute fod yn ddyddiad cyn neu'n hafal i :date.', + 'before_or_equal' => 'Rhaid i\'r :attribute fod yn ddyddiad cyn neu\'n hafal i :date.', 'between' => [ 'numeric' => 'Rhaid i\'r :attribute fod rhwng :min a :max.', 'file' => 'Rhaid i\'r :attribute fod rhwng :min a :max cilobytes.', @@ -33,7 +33,7 @@ return [ 'confirmed' => 'Nid yw\'r cadarnhad :attribute yn cyfateb.', 'date' => 'Nid yw\'r :attribute yn ddyddiad dilys.', 'date_format' => 'Nid yw\'r :attribute yn cyd-fynd â\'r fformat :format.', - 'different' => 'Rhaid i\'r :attribute a'r :other fod yn wahanol.', + 'different' => 'Rhaid i\'r :attribute a\'r :other fod yn wahanol.', 'digits' => 'Rhaid i\'r :attribute fod yn :digits digid.', 'digits_between' => 'Rhaid i\'r :attribute fod rhwng :min a :max digid.', 'dimensions' => 'Mae gan y :attribute ddimensiynau delwedd annilys.', From f71eed823c0d1cba6b87ed758a23b0a4ebb361ef Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 19 Sep 2019 19:55:00 -0600 Subject: [PATCH 28/63] Update changelog --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3361af610..f18d172d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,10 +3,13 @@ ## [Unreleased](https://github.com/pixelfed/pixelfed/compare/v0.10.3...dev) ### Added +- Added Welsh translations [#1706](https://github.com/pixelfed/pixelfed/pull/1706) +- Added Api v1 controller [85835f5a](https://github.com/pixelfed/pixelfed/commit/85835f5a6712dea0562df4be897087de5305750f) ### Fixed - Fixed count bug in StatusHashtagService [#1694](https://github.com/pixelfed/pixelfed/pull/1694) - Fixed private account bug [#1699](https://github.com/pixelfed/pixelfed/pull/1699) +- Fixed comments on MomentUI posts [#1704](https://github.com/pixelfed/pixelfed/pull/1704) ### Changed - Updated EmailService, added new domains [#1690](https://github.com/pixelfed/pixelfed/pull/1690) @@ -14,6 +17,8 @@ - Cache ProfileController [#1700](https://github.com/pixelfed/pixelfed/pull/1700) - Updated ComposeUI v4, made cropping optional [#1702](https://github.com/pixelfed/pixelfed/pull/1702) - Updated DiscoverController, limit Loops to local only posts [#1703](https://github.com/pixelfed/pixelfed/pull/1703) +- Namespaced internal apis [3c306c5e](https://github.com/pixelfed/pixelfed/commit/3c306c5e179d35dbe19a6a1bd9533350e4b96524) +- Updated .env.example with proper remote follow variable [0697f780](https://github.com/pixelfed/pixelfed/commit/0697f780d3a5cba72148f0a767d5a35124a3d9b4) ## Deprecated - Remove deprecated profile following/followers [#1697](https://github.com/pixelfed/pixelfed/pull/1697) From 0a5eaa3118cb09c61d3e5442fe3bf8439a2a12af Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 19 Sep 2019 20:26:46 -0600 Subject: [PATCH 29/63] Update all comments view --- resources/views/status/comments.blade.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/resources/views/status/comments.blade.php b/resources/views/status/comments.blade.php index 01fcf3373..6d5da3cbb 100644 --- a/resources/views/status/comments.blade.php +++ b/resources/views/status/comments.blade.php @@ -5,19 +5,19 @@
-
+

- + {{ str_limit($status->profile->username, 15)}} {!! $status->rendered ?? e($status->caption) !!} {{$status->created_at->diffForHumans(null, true, true ,true)}}

-
+

All Comments

@foreach($replies as $item)

- + {{ str_limit($item->profile->username, 15)}} @@ -28,9 +28,13 @@

@endforeach +
+
+ {{ $replies->links() }} +
From 05f659896d903e1ff41dba810f125d721fa057e7 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 19 Sep 2019 20:27:30 -0600 Subject: [PATCH 30/63] Update CommentController, remove unused show method and update showAll method --- app/Http/Controllers/CommentController.php | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/app/Http/Controllers/CommentController.php b/app/Http/Controllers/CommentController.php index 586aacc72..38c177562 100644 --- a/app/Http/Controllers/CommentController.php +++ b/app/Http/Controllers/CommentController.php @@ -21,21 +21,13 @@ use League\Fractal\Pagination\IlluminatePaginatorAdapter; class CommentController extends Controller { - public function show(Request $request, $username, int $id, int $cid) - { - $user = Profile::whereUsername($username)->firstOrFail(); - $status = Status::whereProfileId($user->id)->whereInReplyToId($id)->findOrFail($cid); - - return view('status.reply', compact('user', 'status')); - } - public function showAll(Request $request, $username, int $id) { - $user = Profile::whereUsername($username)->firstOrFail(); - $status = Status::whereProfileId($user->id)->findOrFail($id); - $replies = Status::whereInReplyToId($id)->paginate(40); + $profile = Profile::whereNull(['status', 'domain'])->whereUsername($username)->firstOrFail(); + $status = Status::whereProfileId($profile->id)->findOrFail($id); + $replies = Status::whereInReplyToId($id)->simplePaginate(40); - return view('status.comments', compact('user', 'status', 'replies')); + return view('status.comments', compact('profile', 'status', 'replies')); } public function store(Request $request) From 2023928bb5fbc278329156714ef174a7c4a9f39f Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 19 Sep 2019 20:28:11 -0600 Subject: [PATCH 31/63] Update web routes --- routes/web.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/routes/web.php b/routes/web.php index 25241ac1b..0a5c36178 100644 --- a/routes/web.php +++ b/routes/web.php @@ -360,13 +360,12 @@ Route::domain(config('pixelfed.domain.app'))->middleware(['validemail', 'twofact Route::redirect('/', '/'); Route::get('{user}.atom', 'ProfileController@showAtomFeed'); Route::get('{username}/outbox', 'FederationController@userOutbox'); - Route::get('{username}', 'ProfileController@permalinkRedirect'); Route::get('{username}/followers', 'FederationController@userFollowers'); Route::get('{username}/following', 'FederationController@userFollowing'); + Route::get('{username}', 'ProfileController@permalinkRedirect'); }); Route::get('c/{collection}', 'CollectionController@show'); - Route::get('p/{username}/{id}/c/{cid}', 'CommentController@show'); Route::get('p/{username}/{id}/c', 'CommentController@showAll'); Route::get('p/{username}/{id}/edit', 'StatusController@edit'); Route::post('p/{username}/{id}/edit', 'StatusController@editStore'); From e1e47282a091f3b3ecf7878ea1b26bf9ba3281f5 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 19 Sep 2019 20:31:14 -0600 Subject: [PATCH 32/63] Update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f18d172d4..5a8659aa5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,9 +19,11 @@ - Updated DiscoverController, limit Loops to local only posts [#1703](https://github.com/pixelfed/pixelfed/pull/1703) - Namespaced internal apis [3c306c5e](https://github.com/pixelfed/pixelfed/commit/3c306c5e179d35dbe19a6a1bd9533350e4b96524) - Updated .env.example with proper remote follow variable [0697f780](https://github.com/pixelfed/pixelfed/commit/0697f780d3a5cba72148f0a767d5a35124a3d9b4) +- Updated show all comments view [0a5eaa31](https://github.com/pixelfed/pixelfed/pull/1708/commits/0a5eaa3118cb09c61d3e5442fe3bf8439a2a12af) ## Deprecated - Remove deprecated profile following/followers [#1697](https://github.com/pixelfed/pixelfed/pull/1697) +- Remove old comment permalink [05f6598](https://github.com/pixelfed/pixelfed/pull/1708/commits/05f659896d903e1ff41dba810f125d721fa057e7) ## [v0.10.3 (2019-09-08)](https://github.com/pixelfed/pixelfed/compare/v0.10.2...v0.10.3) From 01fb5af19e803488c5794b545d218771f6fce6d7 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 19 Sep 2019 20:51:29 -0600 Subject: [PATCH 33/63] Update language view --- resources/views/site/language.blade.php | 30 +++++++++++++------------ 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/resources/views/site/language.blade.php b/resources/views/site/language.blade.php index 131e3bd68..a32472da2 100644 --- a/resources/views/site/language.blade.php +++ b/resources/views/site/language.blade.php @@ -1,21 +1,23 @@ -@extends('site.partial.template') +@extends('layouts.app') -@section('section') +@section('content') -
-

{{__('site.language')}}

+
+
+

{{__('site.language')}}

+
+
+ @foreach(App\Util\Localization\Localization::languages() as $lang) + + @endforeach +
+
-
-
{{__('site.l10nWip')}}!
-

{{__('site.currentLocale')}}: {{App::getLocale()}}

-

{{__('site.selectLocale')}}:

- +
@endsection @push('meta') - + @endpush From ba47d507926e4ac68b5fc7bbfc8ba86d608e896f Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 19 Sep 2019 20:52:58 -0600 Subject: [PATCH 34/63] Update language view --- resources/views/site/language.blade.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/site/language.blade.php b/resources/views/site/language.blade.php index a32472da2..71c77ba31 100644 --- a/resources/views/site/language.blade.php +++ b/resources/views/site/language.blade.php @@ -1,7 +1,7 @@ @extends('layouts.app') @section('content') - +@php($current = App::getLocale())

{{__('site.language')}}

@@ -9,7 +9,7 @@
@foreach(App\Util\Localization\Localization::languages() as $lang) @endforeach
From a4229d5d30faea11e7a72d122c4a5762d867aaf3 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 19 Sep 2019 21:02:36 -0600 Subject: [PATCH 35/63] Update privacy page layout --- resources/views/site/privacy.blade.php | 177 ++++++++++++------------- 1 file changed, 88 insertions(+), 89 deletions(-) diff --git a/resources/views/site/privacy.blade.php b/resources/views/site/privacy.blade.php index ceed0eadf..24f44323d 100644 --- a/resources/views/site/privacy.blade.php +++ b/resources/views/site/privacy.blade.php @@ -1,96 +1,95 @@ -@extends('site.partial.template') +@extends('layouts.app') -@section('section') +@section('content') +
+
+

Privacy Policy

+
+
+ @if($page && $page->content) + {!! $page->content !!} + @else +
+
1. What information do we collect?
+
    +
  • + Basic account information: If you register on this server, you may be asked to enter a username, an e-mail address and a password. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography and avatar image are always listed publicly. +
  • +
  • + Posts, following and other public information: The list of people you follow is listed publicly, the same is true for your followers. When you submit a message, the date and time is stored as well as the application you submitted the message from. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public. +
  • +
  • + Direct and followers-only posts: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it’s important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. Please keep in mind that the operators of the server and any receiving server may view such messages, and that recipients may screenshot, copy or otherwise re-share them. Do not share any dangerous information over Pixelfed. +
  • +
  • + IPs and other metadata: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server. +
  • +
+
2. What do we use your information for?
- @if($page && $page->content) -
-

Privacy Policy

+

Any of the information we collect from you may be used in the following ways:

+
    +
  • + To provide the core functionality of Pixelfed. You can only interact with other people’s content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline. +
  • +
  • + To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations. +
  • +
  • + The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions. +
  • +
+ +
3. How do we protect your information?
+

We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL, and your password is hashed using a strong one-way algorithm. You may enable two-factor authentication to further secure access to your account.

+ + +
4. What is our data retention policy?
+

We will make a good faith effort to:

+
    +
  • + Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days. +
  • +
  • + Retain the IP addresses associated with registered users no more than 12 months. +
  • +
  • + You can request and download an archive of your content, including your posts, media attachments, profile picture, and header image. +
  • +
+

You may irreversibly delete your account at any time.

+ +
5. Do we use cookies?
+

Yes. Cookies are small files that a site or its service provider transfers to your computer’s hard drive through your Web browser (if you allow). These cookies enable the site to recognize your browser and, if you have a registered account, associate it with your registered account. +

+

We use cookies to understand and save your preferences for future visits.

+ +
6. Do we disclose any information to outside parties?
+

We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety.

+

Your public content may be downloaded by other servers in the network. Your public and followers-only posts are delivered to the servers where your followers reside, and direct messages are delivered to the servers of the recipients, in so far as those followers or recipients reside on a different server than this.

+

When you authorize an application to use your account, depending on the scope of permissions you approve, it may access your public profile information, your following list, your followers, your lists, all your posts, and your favourites. Applications can never access your e-mail address or password.

+ +
7. Site usage by children
+ +

If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site.

+ +

If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site.

+ +

Law requirements can be different if this server is in another jurisdiction.

+ +
8. Changes to our Privacy Policy
+

If we decide to change our privacy policy, we will post those changes on this page.

+ +

This document is CC-BY-SA. It was last updated Jun 12, 2018.

+ +

Originally adapted from the Mastodon privacy policy.

+
+ @endif +
+
-
- {!! $page->content !!} - @else -
-

Privacy Policy

-
-
-
-
1. What information do we collect?
-
    -
  • - Basic account information: If you register on this server, you may be asked to enter a username, an e-mail address and a password. You may also enter additional profile information such as a display name and biography, and upload a profile picture and header image. The username, display name, biography and avatar image are always listed publicly. -
  • -
  • - Posts, following and other public information: The list of people you follow is listed publicly, the same is true for your followers. When you submit a message, the date and time is stored as well as the application you submitted the message from. Messages may contain media attachments, such as pictures and videos. Public and unlisted posts are available publicly. When you feature a post on your profile, that is also publicly available information. Your posts are delivered to your followers, in some cases it means they are delivered to different servers and copies are stored there. When you delete posts, this is likewise delivered to your followers. The action of reblogging or favouriting another post is always public. -
  • -
  • - Direct and followers-only posts: All posts are stored and processed on the server. Followers-only posts are delivered to your followers and users who are mentioned in them, and direct posts are delivered only to users mentioned in them. In some cases it means they are delivered to different servers and copies are stored there. We make a good faith effort to limit the access to those posts only to authorized persons, but other servers may fail to do so. Therefore it’s important to review servers your followers belong to. You may toggle an option to approve and reject new followers manually in the settings. Please keep in mind that the operators of the server and any receiving server may view such messages, and that recipients may screenshot, copy or otherwise re-share them. Do not share any dangerous information over Pixelfed. -
  • -
  • - IPs and other metadata: When you log in, we record the IP address you log in from, as well as the name of your browser application. All the logged in sessions are available for your review and revocation in the settings. The latest IP address used is stored for up to 12 months. We also may retain server logs which include the IP address of every request to our server. -
  • -
-
2. What do we use your information for?
- -

Any of the information we collect from you may be used in the following ways:

-
    -
  • - To provide the core functionality of Pixelfed. You can only interact with other people’s content and post your own content when you are logged in. For example, you may follow other people to view their combined posts in your own personalized home timeline. -
  • -
  • - To aid moderation of the community, for example comparing your IP address with other known ones to determine ban evasion or other violations. -
  • -
  • - The email address you provide may be used to send you information, notifications about other people interacting with your content or sending you messages, and to respond to inquiries, and/or other requests or questions. -
  • -
- -
3. How do we protect your information?
-

We implement a variety of security measures to maintain the safety of your personal information when you enter, submit, or access your personal information. Among other things, your browser session, as well as the traffic between your applications and the API, are secured with SSL, and your password is hashed using a strong one-way algorithm. You may enable two-factor authentication to further secure access to your account.

- - -
4. What is our data retention policy?
-

We will make a good faith effort to:

-
    -
  • - Retain server logs containing the IP address of all requests to this server, in so far as such logs are kept, no more than 90 days. -
  • -
  • - Retain the IP addresses associated with registered users no more than 12 months. -
  • -
  • - You can request and download an archive of your content, including your posts, media attachments, profile picture, and header image. -
  • -
-

You may irreversibly delete your account at any time.

- -
5. Do we use cookies?
-

Yes. Cookies are small files that a site or its service provider transfers to your computer’s hard drive through your Web browser (if you allow). These cookies enable the site to recognize your browser and, if you have a registered account, associate it with your registered account. -

-

We use cookies to understand and save your preferences for future visits.

- -
6. Do we disclose any information to outside parties?
-

We do not sell, trade, or otherwise transfer to outside parties your personally identifiable information. This does not include trusted third parties who assist us in operating our site, conducting our business, or servicing you, so long as those parties agree to keep this information confidential. We may also release your information when we believe release is appropriate to comply with the law, enforce our site policies, or protect ours or others rights, property, or safety.

-

Your public content may be downloaded by other servers in the network. Your public and followers-only posts are delivered to the servers where your followers reside, and direct messages are delivered to the servers of the recipients, in so far as those followers or recipients reside on a different server than this.

-

When you authorize an application to use your account, depending on the scope of permissions you approve, it may access your public profile information, your following list, your followers, your lists, all your posts, and your favourites. Applications can never access your e-mail address or password.

- -
7. Site usage by children
- -

If this server is in the EU or the EEA: Our site, products and services are all directed to people who are at least 16 years old. If you are under the age of 16, per the requirements of the GDPR (General Data Protection Regulation) do not use this site.

- -

If this server is in the USA: Our site, products and services are all directed to people who are at least 13 years old. If you are under the age of 13, per the requirements of COPPA (Children's Online Privacy Protection Act) do not use this site.

- -

Law requirements can be different if this server is in another jurisdiction.

- -
8. Changes to our Privacy Policy
-

If we decide to change our privacy policy, we will post those changes on this page.

- -

This document is CC-BY-SA. It was last updated Jun 12, 2018.

- -

Originally adapted from the Mastodon privacy policy.

-
- @endif +
@endsection - @push('meta') @endpush From 4f8c5e5519949c63c702c724a00d8575db4e0014 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Thu, 19 Sep 2019 21:09:33 -0600 Subject: [PATCH 36/63] Update terms of use page layout --- resources/views/site/terms.blade.php | 96 ++++++++++++++-------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/resources/views/site/terms.blade.php b/resources/views/site/terms.blade.php index 5a2e51fb2..e05254d46 100644 --- a/resources/views/site/terms.blade.php +++ b/resources/views/site/terms.blade.php @@ -1,53 +1,53 @@ -@extends('site.partial.template') +@extends('layouts.app') -@section('section') - - @if($page && $page->content) -
-

Terms Of Use

+@section('content') +
+
+

Terms of Use

+
+
+ @if($page && $page->content) + {!! $page->content !!} + @else +
+
1. Terms
+

By accessing the website at {{config('app.url')}}, you are agreeing to be bound by these terms of service, all applicable laws and regulations, and agree that you are responsible for compliance with any applicable local laws. If you do not agree with any of these terms, you are prohibited from using or accessing this site. The materials contained in this website are protected by applicable copyright and trademark law.

+
2. Use License
+
    +
  1. Permission is granted to temporarily download one copy of the materials (information or software) on Pixelfed's website for personal, non-commercial transitory viewing only. This is the grant of a license, not a transfer of title, and under this license you may not: +
      +
    1. modify or copy the materials;
    2. +
    3. use the materials for any commercial purpose, or for any public display (commercial or non-commercial);
    4. +
    5. attempt to decompile or reverse engineer any software contained on Pixelfed's website;
    6. +
    7. remove any copyright or other proprietary notations from the materials; or
    8. +
    9. transfer the materials to another person or "mirror" the materials on any other server.
    10. +
    +
  2. +
  3. This license shall automatically terminate if you violate any of these restrictions and may be terminated by Pixelfed at any time. Upon terminating your viewing of these materials or upon the termination of this license, you must destroy any downloaded materials in your possession whether in electronic or printed format.
  4. +
+
3. Disclaimer
+
    +
  1. The materials on Pixelfed's website are provided on an 'as is' basis. Pixelfed makes no warranties, expressed or implied, and hereby disclaims and negates all other warranties including, without limitation, implied warranties or conditions of merchantability, fitness for a particular purpose, or non-infringement of intellectual property or other violation of rights.
  2. +
  3. Further, Pixelfed does not warrant or make any representations concerning the accuracy, likely results, or reliability of the use of the materials on its website or otherwise relating to such materials or on any sites linked to this site.
  4. +
+
4. Limitations
+

In no event shall Pixelfed or its suppliers be liable for any damages (including, without limitation, damages for loss of data or profit, or due to business interruption) arising out of the use or inability to use the materials on Pixelfed's website, even if Pixelfed or a Pixelfed authorized representative has been notified orally or in writing of the possibility of such damage. Because some jurisdictions do not allow limitations on implied warranties, or limitations of liability for consequential or incidental damages, these limitations may not apply to you.

+
5. Accuracy of materials
+

The materials appearing on Pixelfed's website could include technical, typographical, or photographic errors. Pixelfed does not warrant that any of the materials on its website are accurate, complete or current. Pixelfed may make changes to the materials contained on its website at any time without notice. However Pixelfed does not make any commitment to update the materials.

+
6. Links
+

Pixelfed has not reviewed all of the sites linked to its website and is not responsible for the contents of any such linked site. The inclusion of any link does not imply endorsement by Pixelfed of the site. Use of any such linked website is at the user's own risk.

+
7. Modifications
+

Pixelfed may revise these terms of service for its website at any time without notice. By using this website you are agreeing to be bound by the then current version of these terms of service.

+
8. Governing Law
+

These terms and conditions are governed by and construed in accordance with the laws of Canada and you irrevocably submit to the exclusive jurisdiction of the courts in that State or location.

+
9. Community Guidelines
+

You can view our Community Guidelines here.

+
+ @endif +
+
-
- {!! $page->content !!} - @else -
-

Terms Of Use

-
-
-
1. Terms
-

By accessing the website at {{config('app.url')}}, you are agreeing to be bound by these terms of service, all applicable laws and regulations, and agree that you are responsible for compliance with any applicable local laws. If you do not agree with any of these terms, you are prohibited from using or accessing this site. The materials contained in this website are protected by applicable copyright and trademark law.

-
2. Use License
-
    -
  1. Permission is granted to temporarily download one copy of the materials (information or software) on Pixelfed's website for personal, non-commercial transitory viewing only. This is the grant of a license, not a transfer of title, and under this license you may not: -
      -
    1. modify or copy the materials;
    2. -
    3. use the materials for any commercial purpose, or for any public display (commercial or non-commercial);
    4. -
    5. attempt to decompile or reverse engineer any software contained on Pixelfed's website;
    6. -
    7. remove any copyright or other proprietary notations from the materials; or
    8. -
    9. transfer the materials to another person or "mirror" the materials on any other server.
    10. -
    -
  2. -
  3. This license shall automatically terminate if you violate any of these restrictions and may be terminated by Pixelfed at any time. Upon terminating your viewing of these materials or upon the termination of this license, you must destroy any downloaded materials in your possession whether in electronic or printed format.
  4. -
-
3. Disclaimer
-
    -
  1. The materials on Pixelfed's website are provided on an 'as is' basis. Pixelfed makes no warranties, expressed or implied, and hereby disclaims and negates all other warranties including, without limitation, implied warranties or conditions of merchantability, fitness for a particular purpose, or non-infringement of intellectual property or other violation of rights.
  2. -
  3. Further, Pixelfed does not warrant or make any representations concerning the accuracy, likely results, or reliability of the use of the materials on its website or otherwise relating to such materials or on any sites linked to this site.
  4. -
-
4. Limitations
-

In no event shall Pixelfed or its suppliers be liable for any damages (including, without limitation, damages for loss of data or profit, or due to business interruption) arising out of the use or inability to use the materials on Pixelfed's website, even if Pixelfed or a Pixelfed authorized representative has been notified orally or in writing of the possibility of such damage. Because some jurisdictions do not allow limitations on implied warranties, or limitations of liability for consequential or incidental damages, these limitations may not apply to you.

-
5. Accuracy of materials
-

The materials appearing on Pixelfed's website could include technical, typographical, or photographic errors. Pixelfed does not warrant that any of the materials on its website are accurate, complete or current. Pixelfed may make changes to the materials contained on its website at any time without notice. However Pixelfed does not make any commitment to update the materials.

-
6. Links
-

Pixelfed has not reviewed all of the sites linked to its website and is not responsible for the contents of any such linked site. The inclusion of any link does not imply endorsement by Pixelfed of the site. Use of any such linked website is at the user's own risk.

-
7. Modifications
-

Pixelfed may revise these terms of service for its website at any time without notice. By using this website you are agreeing to be bound by the then current version of these terms of service.

-
8. Governing Law
-

These terms and conditions are governed by and construed in accordance with the laws of Canada and you irrevocably submit to the exclusive jurisdiction of the courts in that State or location.

-
9. Community Guidelines
-

You can view our Community Guidelines here.

-
10. Additional Rules
-

This website does not have any additional rules.

- @endif +
@endsection @push('meta') From c87d8c160b685eb3fb124fbc8641f4352c8a55fd Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 20 Sep 2019 20:45:49 -0600 Subject: [PATCH 37/63] Add database migration --- ..._21_015556_add_language_to_users_table.php | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 database/migrations/2019_09_21_015556_add_language_to_users_table.php diff --git a/database/migrations/2019_09_21_015556_add_language_to_users_table.php b/database/migrations/2019_09_21_015556_add_language_to_users_table.php new file mode 100644 index 000000000..6bbfa8082 --- /dev/null +++ b/database/migrations/2019_09_21_015556_add_language_to_users_table.php @@ -0,0 +1,32 @@ +string('language')->nullable()->index()->after('status'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn('language'); + }); + } +} From 18bc9c3024567aec6c70c63308ad5ab654a90abb Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 20 Sep 2019 20:49:50 -0600 Subject: [PATCH 38/63] Store user preferred language in database --- .../Controllers/Settings/HomeSettings.php | 13 ++++++++---- app/Http/Controllers/SiteController.php | 5 +++++ app/Listeners/AuthLogin.php | 6 ++++++ resources/views/settings/home.blade.php | 20 ++++++++++++++----- 4 files changed, 35 insertions(+), 9 deletions(-) diff --git a/app/Http/Controllers/Settings/HomeSettings.php b/app/Http/Controllers/Settings/HomeSettings.php index b63cedee8..aaf063c3a 100644 --- a/app/Http/Controllers/Settings/HomeSettings.php +++ b/app/Http/Controllers/Settings/HomeSettings.php @@ -38,12 +38,14 @@ trait HomeSettings 'name' => 'required|string|max:'.config('pixelfed.max_name_length'), 'bio' => 'nullable|string|max:'.config('pixelfed.max_bio_length'), 'website' => 'nullable|url', + 'language' => 'nullable|string|min:2|max:5' ]); $changes = false; $name = strip_tags(Purify::clean($request->input('name'))); $bio = $request->filled('bio') ? strip_tags(Purify::clean($request->input('bio'))) : null; $website = $request->input('website'); + $language = $request->input('language'); $user = Auth::user(); $profile = $user->profile; $layout = $request->input('profile_layout'); @@ -51,10 +53,10 @@ trait HomeSettings $layout = !in_array($layout, ['metro', 'moment']) ? 'metro' : $layout; } - $validate = config('pixelfed.enforce_email_verification'); + $enforceEmailVerification = config('pixelfed.enforce_email_verification'); // Only allow email to be updated if not yet verified - if (!$validate || !$changes && $user->email_verified_at) { + if (!$enforceEmailVerification || !$changes && $user->email_verified_at) { if ($profile->name != $name) { $changes = true; $user->name = $name; @@ -71,9 +73,12 @@ trait HomeSettings $profile->bio = $bio; } - if ($profile->profile_layout != $layout) { + if($user->language != $language && + in_array($language, \App\Util\Localization\Localization::languages()) + ) { $changes = true; - $profile->profile_layout = $layout; + $user->language = $language; + session()->put('locale', $language); } } diff --git a/app/Http/Controllers/SiteController.php b/app/Http/Controllers/SiteController.php index f552013d5..b7d2bdb19 100644 --- a/app/Http/Controllers/SiteController.php +++ b/app/Http/Controllers/SiteController.php @@ -34,6 +34,11 @@ class SiteController extends Controller // todo: add other locales after pushing new l10n strings $locales = Localization::languages(); if(in_array($locale, $locales)) { + if($request->user()) { + $user = $request->user(); + $user->language = $locale; + $user->save(); + } session()->put('locale', $locale); } diff --git a/app/Listeners/AuthLogin.php b/app/Listeners/AuthLogin.php index fab7ff6d6..bd38eee4a 100644 --- a/app/Listeners/AuthLogin.php +++ b/app/Listeners/AuthLogin.php @@ -36,6 +36,7 @@ class AuthLogin $this->userState($user); $this->userDevice($user); $this->userProfileId($user); + $this->userLanguage($user); } protected function userProfile($user) @@ -132,4 +133,9 @@ class AuthLogin }); } } + + protected function userLanguage($user) + { + session()->put('locale', $user->language ?? 'en'); + } } diff --git a/resources/views/settings/home.blade.php b/resources/views/settings/home.blade.php index 5487eaafd..12016533d 100644 --- a/resources/views/settings/home.blade.php +++ b/resources/views/settings/home.blade.php @@ -37,25 +37,25 @@
@csrf
- +
- +
- +
- +

@@ -63,11 +63,21 @@

+
+ +
+ +
+

Storage Usage

- +
From 951b6fa094a16194484fd44f6dec3b1787f0cb86 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 20 Sep 2019 21:22:01 -0600 Subject: [PATCH 39/63] Update ApiV1Controller, add instance method --- app/Http/Controllers/Api/ApiV1Controller.php | 22 ++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/app/Http/Controllers/Api/ApiV1Controller.php b/app/Http/Controllers/Api/ApiV1Controller.php index 4bfc890cf..757de1ab4 100644 --- a/app/Http/Controllers/Api/ApiV1Controller.php +++ b/app/Http/Controllers/Api/ApiV1Controller.php @@ -77,4 +77,26 @@ class ApiV1Controller extends Controller return response()->json($res); } + + public function instance(Request $request) + { + $res = [ + 'description' => 'Pixelfed - Photo sharing for everyone', + 'email' => config('instance.email'), + 'languages' => ['en'], + 'max_toot_chars' => config('pixelfed.max_caption_length'), + 'registrations' => config('pixelfed.open_registration'), + 'stats' => [ + 'user_count' => 0, + 'status_count' => 0, + 'domain_count' => 0 + ], + 'thumbnail' => config('app.url') . '/img/pixelfed-icon-color.svg', + 'title' => 'Pixelfed (' . config('pixelfed.domain.app') . ')', + 'uri' => config('app.url'), + 'urls' => [], + 'version' => '2.7.2 (compatible; Pixelfed ' . config('pixelfed.version') . ')' + ]; + return response()->json($res, 200, [], JSON_PRETTY_PRINT); + } } \ No newline at end of file From 9dc2234bacd73d7a173dfeb60153be16b348a799 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 20 Sep 2019 21:25:02 -0600 Subject: [PATCH 40/63] Update api routes --- routes/api.php | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/routes/api.php b/routes/api.php index 3a6a37c10..d614942dc 100644 --- a/routes/api.php +++ b/routes/api.php @@ -4,4 +4,18 @@ use Illuminate\Http\Request; Route::post('/users/{username}/inbox', 'FederationController@userInbox'); -Route::post('/api/v1/apps', 'Api\ApiV1Controller@apps'); + +Route::group(['prefix' => 'api'], function() { + Route::group(['prefix' => 'v1'], function() { + Route::post('apps', 'Api\ApiV1Controller@apps'); + + Route::get('accounts/verify_credentials', 'ApiController@verifyCredentials'); + Route::get('accounts/relationships', 'PublicApiController@relationships'); + Route::get('accounts/{id}/statuses', 'PublicApiController@accountStatuses'); + Route::get('accounts/{id}/following', 'PublicApiController@accountFollowing'); + Route::get('accounts/{id}/followers', 'PublicApiController@accountFollowers'); + Route::get('accounts/{id}', 'Api\ApiV1Controller@accountById'); + + Route::get('instance', 'Api\ApiV1Controller@instance'); + }); +}); From c59ac6541112883169d502ad9d9a5a2e3a2ff609 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 20 Sep 2019 21:25:35 -0600 Subject: [PATCH 41/63] Update changelog --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a8659aa5..08b3bfe2f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ ### Added - Added Welsh translations [#1706](https://github.com/pixelfed/pixelfed/pull/1706) - Added Api v1 controller [85835f5a](https://github.com/pixelfed/pixelfed/commit/85835f5a6712dea0562df4be897087de5305750f) +- Added database migration that adds a language column to the users table [c87d8c16](https://github.com/pixelfed/pixelfed/commit/c87d8c16) +- Added persistent preferred language [18bc9c30](https://github.com/pixelfed/pixelfed/commit/18bc9c30) ### Fixed - Fixed count bug in StatusHashtagService [#1694](https://github.com/pixelfed/pixelfed/pull/1694) @@ -20,6 +22,10 @@ - Namespaced internal apis [3c306c5e](https://github.com/pixelfed/pixelfed/commit/3c306c5e179d35dbe19a6a1bd9533350e4b96524) - Updated .env.example with proper remote follow variable [0697f780](https://github.com/pixelfed/pixelfed/commit/0697f780d3a5cba72148f0a767d5a35124a3d9b4) - Updated show all comments view [0a5eaa31](https://github.com/pixelfed/pixelfed/pull/1708/commits/0a5eaa3118cb09c61d3e5442fe3bf8439a2a12af) +- Updated language page layout [01fb5af](https://github.com/pixelfed/pixelfed/pull/1708/commits/01fb5af19e803488c5794b545d218771f6fce6d7) +- Updated privacy policy page layout [a4229d5](https://github.com/pixelfed/pixelfed/pull/1708/commits/a4229d5d30faea11e7a72d122c4a5762d867aaf3) +- Updated terms page layout [4f8c5e5](https://github.com/pixelfed/pixelfed/pull/1708/commits/4f8c5e5519949c63c702c724a00d8575db4e0014) +- Update v1 API, added /api/v1/instance endpoint [951b6fa0](https://github.com/pixelfed/pixelfed/commit/951b6fa0) [9dc2234b](https://github.com/pixelfed/pixelfed/commit/99dc2234b) ## Deprecated - Remove deprecated profile following/followers [#1697](https://github.com/pixelfed/pixelfed/pull/1697) From 7d61e0ad8d4dbaf1b9b958d1aa5363322d93af86 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 20 Sep 2019 21:29:47 -0600 Subject: [PATCH 42/63] Update routes --- routes/api.php | 8 -------- routes/web.php | 25 +++++++++++++------------ 2 files changed, 13 insertions(+), 20 deletions(-) diff --git a/routes/api.php b/routes/api.php index d614942dc..78c263701 100644 --- a/routes/api.php +++ b/routes/api.php @@ -8,14 +8,6 @@ Route::post('/users/{username}/inbox', 'FederationController@userInbox'); Route::group(['prefix' => 'api'], function() { Route::group(['prefix' => 'v1'], function() { Route::post('apps', 'Api\ApiV1Controller@apps'); - - Route::get('accounts/verify_credentials', 'ApiController@verifyCredentials'); - Route::get('accounts/relationships', 'PublicApiController@relationships'); - Route::get('accounts/{id}/statuses', 'PublicApiController@accountStatuses'); - Route::get('accounts/{id}/following', 'PublicApiController@accountFollowing'); - Route::get('accounts/{id}/followers', 'PublicApiController@accountFollowers'); - Route::get('accounts/{id}', 'Api\ApiV1Controller@accountById'); - Route::get('instance', 'Api\ApiV1Controller@instance'); }); }); diff --git a/routes/web.php b/routes/web.php index 0a5c36178..9183fc17a 100644 --- a/routes/web.php +++ b/routes/web.php @@ -77,19 +77,20 @@ Route::domain(config('pixelfed.domain.app'))->middleware(['validemail', 'twofact Route::get('nodeinfo/2.0.json', 'FederationController@nodeinfo'); Route::group(['prefix' => 'v1'], function () { - // Route::get('accounts/verify_credentials', 'ApiController@verifyCredentials'); - // Route::get('accounts/relationships', 'PublicApiController@relationships'); - // Route::get('accounts/{id}/statuses', 'PublicApiController@accountStatuses'); - // Route::get('accounts/{id}/following', 'PublicApiController@accountFollowing'); - // Route::get('accounts/{id}/followers', 'PublicApiController@accountFollowers'); + Route::get('accounts/verify_credentials', 'ApiController@verifyCredentials'); + Route::get('accounts/relationships', 'PublicApiController@relationships'); + Route::get('accounts/{id}/statuses', 'PublicApiController@accountStatuses'); + Route::get('accounts/{id}/following', 'PublicApiController@accountFollowing'); + Route::get('accounts/{id}/followers', 'PublicApiController@accountFollowers'); // Route::get('accounts/{id}', 'PublicApiController@account'); - // Route::post('avatar/update', 'ApiController@avatarUpdate'); - // Route::get('likes', 'ApiController@hydrateLikes'); - // Route::post('media', 'ApiController@uploadMedia'); - // Route::delete('media', 'ApiController@deleteMedia'); - // Route::get('notifications', 'ApiController@notifications'); - // Route::get('timelines/public', 'PublicApiController@publicTimelineApi'); - // Route::get('timelines/home', 'PublicApiController@homeTimelineApi'); + Route::get('accounts/{id}', 'Api\ApiV1Controller@accountById'); + Route::post('avatar/update', 'ApiController@avatarUpdate'); + Route::get('likes', 'ApiController@hydrateLikes'); + Route::post('media', 'ApiController@uploadMedia'); + Route::delete('media', 'ApiController@deleteMedia'); + Route::get('notifications', 'ApiController@notifications'); + Route::get('timelines/public', 'PublicApiController@publicTimelineApi'); + Route::get('timelines/home', 'PublicApiController@homeTimelineApi'); }); Route::group(['prefix' => 'v2'], function() { Route::get('config', 'ApiController@siteConfiguration'); From 1229cc1521e3b75e8ddd77b892c20c4c0787415e Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 20 Sep 2019 22:01:36 -0600 Subject: [PATCH 43/63] Update v1 api --- app/Http/Controllers/Api/ApiV1Controller.php | 26 ++++++++++++++++++++ app/Http/Controllers/PublicApiController.php | 2 +- routes/api.php | 3 +++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Api/ApiV1Controller.php b/app/Http/Controllers/Api/ApiV1Controller.php index 757de1ab4..3347b0289 100644 --- a/app/Http/Controllers/Api/ApiV1Controller.php +++ b/app/Http/Controllers/Api/ApiV1Controller.php @@ -78,6 +78,15 @@ class ApiV1Controller extends Controller return response()->json($res); } + public function statusById(Request $request, $id) + { + $status = Status::whereVisibility('public')->findOrFail($id); + $resource = new Fractal\Resource\Item($status, new StatusTransformer()); + $res = $this->fractal->createData($resource)->toArray(); + + return response()->json($res); + } + public function instance(Request $request) { $res = [ @@ -99,4 +108,21 @@ class ApiV1Controller extends Controller ]; return response()->json($res, 200, [], JSON_PRETTY_PRINT); } + + public function filters(Request $request) + { + // Pixelfed does not yet support keyword filters + return response()->json([]); + } + + public function context(Request $request) + { + // todo + $res = [ + 'ancestors' => [], + 'descendants' => [] + ]; + + return response()->json($res); + } } \ No newline at end of file diff --git a/app/Http/Controllers/PublicApiController.php b/app/Http/Controllers/PublicApiController.php index 41cc2b3d9..99a7fd382 100644 --- a/app/Http/Controllers/PublicApiController.php +++ b/app/Http/Controllers/PublicApiController.php @@ -223,7 +223,7 @@ class PublicApiController extends Controller 'page' => 'nullable|integer|max:40', 'min_id' => 'nullable|integer|min:0|max:' . PHP_INT_MAX, 'max_id' => 'nullable|integer|min:0|max:' . PHP_INT_MAX, - 'limit' => 'nullable|integer|max:20' + 'limit' => 'nullable|integer|max:30' ]); if(config('instance.timeline.local.is_public') == false && !Auth::check()) { diff --git a/routes/api.php b/routes/api.php index 78c263701..65380a01a 100644 --- a/routes/api.php +++ b/routes/api.php @@ -9,5 +9,8 @@ Route::group(['prefix' => 'api'], function() { Route::group(['prefix' => 'v1'], function() { Route::post('apps', 'Api\ApiV1Controller@apps'); Route::get('instance', 'Api\ApiV1Controller@instance'); + Route::get('filters', 'Api\ApiV1Controller@filters'); + Route::get('statuses/{id}', 'Api\ApiV1Controller@statusById'); + Route::get('statuses/{id}/context', 'Api\ApiV1Controller@context'); }); }); From 83c545aa57742a45d41b16342b1bb564018082f0 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 20 Sep 2019 22:10:56 -0600 Subject: [PATCH 44/63] Update web routes --- routes/web.php | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/routes/web.php b/routes/web.php index 9183fc17a..5f8d730fe 100644 --- a/routes/web.php +++ b/routes/web.php @@ -77,20 +77,20 @@ Route::domain(config('pixelfed.domain.app'))->middleware(['validemail', 'twofact Route::get('nodeinfo/2.0.json', 'FederationController@nodeinfo'); Route::group(['prefix' => 'v1'], function () { - Route::get('accounts/verify_credentials', 'ApiController@verifyCredentials'); - Route::get('accounts/relationships', 'PublicApiController@relationships'); - Route::get('accounts/{id}/statuses', 'PublicApiController@accountStatuses'); - Route::get('accounts/{id}/following', 'PublicApiController@accountFollowing'); - Route::get('accounts/{id}/followers', 'PublicApiController@accountFollowers'); + Route::get('accounts/verify_credentials', 'ApiController@verifyCredentials')->middleware('auth:api'); + Route::get('accounts/relationships', 'PublicApiController@relationships')->middleware('auth:api'); + Route::get('accounts/{id}/statuses', 'PublicApiController@accountStatuses')->middleware('auth:api'); + Route::get('accounts/{id}/following', 'PublicApiController@accountFollowing')->middleware('auth:api'); + Route::get('accounts/{id}/followers', 'PublicApiController@accountFollowers')->middleware('auth:api'); // Route::get('accounts/{id}', 'PublicApiController@account'); Route::get('accounts/{id}', 'Api\ApiV1Controller@accountById'); - Route::post('avatar/update', 'ApiController@avatarUpdate'); + Route::post('avatar/update', 'ApiController@avatarUpdate')->middleware('auth:api'); Route::get('likes', 'ApiController@hydrateLikes'); - Route::post('media', 'ApiController@uploadMedia'); - Route::delete('media', 'ApiController@deleteMedia'); - Route::get('notifications', 'ApiController@notifications'); + Route::post('media', 'ApiController@uploadMedia')->middleware('auth:api'); + Route::delete('media', 'ApiController@deleteMedia')->middleware('auth:api'); + Route::get('notifications', 'ApiController@notifications')->middleware('auth:api'); Route::get('timelines/public', 'PublicApiController@publicTimelineApi'); - Route::get('timelines/home', 'PublicApiController@homeTimelineApi'); + Route::get('timelines/home', 'PublicApiController@homeTimelineApi')->middleware('auth:api'); }); Route::group(['prefix' => 'v2'], function() { Route::get('config', 'ApiController@siteConfiguration'); From 5c327a0ae2cf67d7c1e15b993d072aaf4da3c3e2 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 20 Sep 2019 22:12:23 -0600 Subject: [PATCH 45/63] Update PublicApiController, increase home timeline limit to 40 --- app/Http/Controllers/PublicApiController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/PublicApiController.php b/app/Http/Controllers/PublicApiController.php index 99a7fd382..dee909acf 100644 --- a/app/Http/Controllers/PublicApiController.php +++ b/app/Http/Controllers/PublicApiController.php @@ -332,7 +332,7 @@ class PublicApiController extends Controller 'page' => 'nullable|integer|max:40', 'min_id' => 'nullable|integer|min:0|max:' . PHP_INT_MAX, 'max_id' => 'nullable|integer|min:0|max:' . PHP_INT_MAX, - 'limit' => 'nullable|integer|max:20' + 'limit' => 'nullable|integer|max:40' ]); $page = $request->input('page'); From 9886ec59542a703f77f72e93ffd45324017b3b89 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 20 Sep 2019 22:27:00 -0600 Subject: [PATCH 46/63] Update BaseApiController --- app/Http/Controllers/Api/BaseApiController.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Api/BaseApiController.php b/app/Http/Controllers/Api/BaseApiController.php index 681126ff6..e0ea10304 100644 --- a/app/Http/Controllers/Api/BaseApiController.php +++ b/app/Http/Controllers/Api/BaseApiController.php @@ -40,13 +40,15 @@ class BaseApiController extends Controller public function __construct() { - $this->middleware('auth'); + // $this->middleware('auth'); $this->fractal = new Fractal\Manager(); $this->fractal->setSerializer(new ArraySerializer()); } public function notifications(Request $request) { + abort_if(!$request->user(), 403); + $pid = Auth::user()->profile->id; $pg = $request->input('pg'); if($pg == true) { @@ -74,6 +76,7 @@ class BaseApiController extends Controller public function accounts(Request $request, $id) { + abort_if(!$request->user(), 403); $profile = Profile::findOrFail($id); $resource = new Fractal\Resource\Item($profile, new AccountTransformer()); $res = $this->fractal->createData($resource)->toArray(); @@ -83,6 +86,7 @@ class BaseApiController extends Controller public function accountFollowers(Request $request, $id) { + abort_if(!$request->user(), 403); $profile = Profile::findOrFail($id); $followers = $profile->followers; $resource = new Fractal\Resource\Collection($followers, new AccountTransformer()); @@ -93,6 +97,7 @@ class BaseApiController extends Controller public function accountFollowing(Request $request, $id) { + abort_if(!$request->user(), 403); $profile = Profile::findOrFail($id); $following = $profile->following; $resource = new Fractal\Resource\Collection($following, new AccountTransformer()); @@ -103,6 +108,7 @@ class BaseApiController extends Controller public function accountStatuses(Request $request, $id) { + abort_if(!$request->user(), 403); $this->validate($request, [ 'only_media' => 'nullable', 'pinned' => 'nullable', @@ -152,6 +158,7 @@ class BaseApiController extends Controller public function avatarUpdate(Request $request) { + abort_if(!$request->user(), 403); $this->validate($request, [ 'upload' => 'required|mimes:jpeg,png,gif|max:'.config('pixelfed.max_avatar_size'), ]); @@ -188,6 +195,7 @@ class BaseApiController extends Controller public function showTempMedia(Request $request, int $profileId, $mediaId) { + abort_if(!$request->user(), 403); abort_if(!$request->hasValidSignature(), 404); abort_if(Auth::user()->profile_id !== $profileId, 404); $media = Media::whereProfileId(Auth::user()->profile_id)->findOrFail($mediaId); @@ -197,6 +205,7 @@ class BaseApiController extends Controller public function uploadMedia(Request $request) { + abort_if(!$request->user(), 403); $this->validate($request, [ 'file.*' => function() { return [ @@ -278,6 +287,7 @@ class BaseApiController extends Controller public function deleteMedia(Request $request) { + abort_if(!$request->user(), 403); $this->validate($request, [ 'id' => 'required|integer|min:1|exists:media,id' ]); @@ -299,6 +309,7 @@ class BaseApiController extends Controller public function verifyCredentials(Request $request) { + abort_if(!$request->user(), 403); $id = Auth::id(); $res = Cache::remember('user:account:id:'.$id, now()->addHours(6), function() use($id) { From a24b4a40e05a4fb6d29bb480279aa710745f8962 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 20 Sep 2019 22:31:34 -0600 Subject: [PATCH 47/63] Update BaseApiController --- app/Http/Controllers/Api/BaseApiController.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/Api/BaseApiController.php b/app/Http/Controllers/Api/BaseApiController.php index e0ea10304..b435d20e3 100644 --- a/app/Http/Controllers/Api/BaseApiController.php +++ b/app/Http/Controllers/Api/BaseApiController.php @@ -48,8 +48,7 @@ class BaseApiController extends Controller public function notifications(Request $request) { abort_if(!$request->user(), 403); - - $pid = Auth::user()->profile->id; + $pid = $request->user()->profile_id; $pg = $request->input('pg'); if($pg == true) { $timeago = Carbon::now()->subMonths(6); @@ -62,7 +61,7 @@ class BaseApiController extends Controller } else { $this->validate($request, [ 'page' => 'nullable|integer|min:1|max:10', - 'limit' => 'nullable|integer|min:1|max:10' + 'limit' => 'nullable|integer|min:1|max:40' ]); $limit = $request->input('limit') ?? 10; $page = $request->input('page') ?? 1; From 30402f8602117d987d5e828804f987dc6d3064f6 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 20 Sep 2019 22:50:45 -0600 Subject: [PATCH 48/63] Update NotificationTransformer --- app/Transformer/Api/NotificationTransformer.php | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/Transformer/Api/NotificationTransformer.php b/app/Transformer/Api/NotificationTransformer.php index 0408eeea8..3463ed00e 100644 --- a/app/Transformer/Api/NotificationTransformer.php +++ b/app/Transformer/Api/NotificationTransformer.php @@ -21,9 +21,7 @@ class NotificationTransformer extends Fractal\TransformerAbstract return [ 'id' => (string) $notification->id, 'type' => $this->replaceTypeVerb($notification->action), - 'created_at' => (string) $notification->created_at->format('c'), - 'account' => null, - 'status' => null + 'created_at' => (string) $notification->created_at->toISOString(), ]; } From 6fbbe3202e6f47e77371a66e292b42293592bbe2 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 20 Sep 2019 22:59:18 -0600 Subject: [PATCH 49/63] Update BaseApiController --- .../Controllers/Api/BaseApiController.php | 32 +++++++------------ 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/app/Http/Controllers/Api/BaseApiController.php b/app/Http/Controllers/Api/BaseApiController.php index b435d20e3..f33b6e0ff 100644 --- a/app/Http/Controllers/Api/BaseApiController.php +++ b/app/Http/Controllers/Api/BaseApiController.php @@ -49,26 +49,18 @@ class BaseApiController extends Controller { abort_if(!$request->user(), 403); $pid = $request->user()->profile_id; - $pg = $request->input('pg'); - if($pg == true) { - $timeago = Carbon::now()->subMonths(6); - $notifications = Notification::whereProfileId($pid) - ->whereDate('created_at', '>', $timeago) - ->latest() - ->simplePaginate(10); - $resource = new Fractal\Resource\Collection($notifications, new NotificationTransformer()); - $res = $this->fractal->createData($resource)->toArray(); - } else { - $this->validate($request, [ - 'page' => 'nullable|integer|min:1|max:10', - 'limit' => 'nullable|integer|min:1|max:40' - ]); - $limit = $request->input('limit') ?? 10; - $page = $request->input('page') ?? 1; - $end = (int) $page * $limit; - $start = (int) $end - $limit; - $res = NotificationService::get($pid, $start, $end); - } + $this->validate($request, [ + 'page' => 'nullable|integer|min:1|max:10', + 'limit' => 'nullable|integer|min:1|max:40' + ]); + $limit = $request->input('limit') ?? 10; + $timeago = Carbon::now()->subMonths(6); + $notifications = Notification::whereProfileId($pid) + ->whereDate('created_at', '>', $timeago) + ->latest() + ->simplePaginate($limit); + $resource = new Fractal\Resource\Collection($notifications, new NotificationTransformer()); + $res = $this->fractal->createData($resource)->toArray(); return response()->json($res); } From 403163f12f2e5deb562024345daddc032cb37c48 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 20 Sep 2019 23:15:35 -0600 Subject: [PATCH 50/63] Update AccountTransformer --- app/Transformer/Api/AccountTransformer.php | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/app/Transformer/Api/AccountTransformer.php b/app/Transformer/Api/AccountTransformer.php index eb3e819cb..1384e5191 100644 --- a/app/Transformer/Api/AccountTransformer.php +++ b/app/Transformer/Api/AccountTransformer.php @@ -14,14 +14,17 @@ class AccountTransformer extends Fractal\TransformerAbstract public function transform(Profile $profile) { - $is_admin = $profile->domain ? false : $profile->user->is_admin; + $local = $profile->domain == null; + $is_admin = !$local ? false : $profile->user->is_admin; + $acct = $local ? $profile->username : substr($profile->username, 1); + $username = $local ? $profile->username : explode('@', $profile->username)[0]; return [ 'id' => (string) $profile->id, - 'username' => $profile->username, - 'acct' => $profile->username, + 'username' => $username, + 'acct' => $acct, 'display_name' => $profile->name, 'locked' => (bool) $profile->is_private, - 'created_at' => null, + 'created_at' => $profile->created_at->toISOString(), 'followers_count' => $profile->followerCount(), 'following_count' => $profile->followingCount(), 'statuses_count' => (int) $profile->statusCount(), @@ -33,11 +36,13 @@ class AccountTransformer extends Fractal\TransformerAbstract 'header_static' => null, 'header_bg' => $profile->header_bg, 'moved' => null, - 'fields' => null, + 'fields' => [], 'bot' => null, 'website' => $profile->website, 'software' => 'pixelfed', 'is_admin' => (bool) $is_admin, + 'last_status_at' => null, + 'emojis' => [], ]; } From 1ff7ba909efc84f928b99b586e05edca2028af41 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 20 Sep 2019 23:20:22 -0600 Subject: [PATCH 51/63] Update AccountTransformer, I need some coffee --- app/Transformer/Api/AccountTransformer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Transformer/Api/AccountTransformer.php b/app/Transformer/Api/AccountTransformer.php index 1384e5191..d9fbbb38d 100644 --- a/app/Transformer/Api/AccountTransformer.php +++ b/app/Transformer/Api/AccountTransformer.php @@ -17,7 +17,7 @@ class AccountTransformer extends Fractal\TransformerAbstract $local = $profile->domain == null; $is_admin = !$local ? false : $profile->user->is_admin; $acct = $local ? $profile->username : substr($profile->username, 1); - $username = $local ? $profile->username : explode('@', $profile->username)[0]; + $username = $local ? $profile->username : explode('@', $acct)[0]; return [ 'id' => (string) $profile->id, 'username' => $username, From a6bf535dbcc351ae3cd158529078a61de15d7405 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 20 Sep 2019 23:26:56 -0600 Subject: [PATCH 52/63] Update API Transformers --- app/Transformer/Api/StatusStatelessTransformer.php | 2 +- app/Transformer/Api/StatusTransformer.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Transformer/Api/StatusStatelessTransformer.php b/app/Transformer/Api/StatusStatelessTransformer.php index 1b6cb4543..72fcbe5b4 100644 --- a/app/Transformer/Api/StatusStatelessTransformer.php +++ b/app/Transformer/Api/StatusStatelessTransformer.php @@ -25,7 +25,7 @@ class StatusStatelessTransformer extends Fractal\TransformerAbstract 'in_reply_to_account_id' => $status->in_reply_to_profile_id, 'reblog' => null, 'content' => $status->rendered ?? $status->caption, - 'created_at' => $status->created_at->format('c'), + 'created_at' => $status->created_at->toISOString(), 'emojis' => [], 'reblogs_count' => $status->shares()->count(), 'favourites_count' => $status->likes()->count(), diff --git a/app/Transformer/Api/StatusTransformer.php b/app/Transformer/Api/StatusTransformer.php index 27f3f555f..a14310f91 100644 --- a/app/Transformer/Api/StatusTransformer.php +++ b/app/Transformer/Api/StatusTransformer.php @@ -23,7 +23,7 @@ class StatusTransformer extends Fractal\TransformerAbstract 'in_reply_to_account_id' => $status->in_reply_to_profile_id, 'reblog' => null, 'content' => $status->rendered ?? $status->caption, - 'created_at' => $status->created_at->format('c'), + 'created_at' => $status->created_at->toISOString(), 'emojis' => [], 'reblogs_count' => $status->reblogs_count != 0 ? $status->reblogs_count: $status->shares()->count(), 'favourites_count' => $status->likes_count != 0 ? $status->likes_count: $status->likes()->count(), From 2484ed1e6d58019712297236294eb596284e2822 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 20 Sep 2019 23:45:19 -0600 Subject: [PATCH 53/63] Update Api Transformers --- app/Transformer/Api/AccountTransformer.php | 2 +- app/Transformer/Api/NotificationTransformer.php | 2 +- app/Transformer/Api/StatusStatelessTransformer.php | 2 +- app/Transformer/Api/StatusTransformer.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/Transformer/Api/AccountTransformer.php b/app/Transformer/Api/AccountTransformer.php index d9fbbb38d..42a35c149 100644 --- a/app/Transformer/Api/AccountTransformer.php +++ b/app/Transformer/Api/AccountTransformer.php @@ -24,7 +24,7 @@ class AccountTransformer extends Fractal\TransformerAbstract 'acct' => $acct, 'display_name' => $profile->name, 'locked' => (bool) $profile->is_private, - 'created_at' => $profile->created_at->toISOString(), + 'created_at' => $profile->created_at->format('c'), 'followers_count' => $profile->followerCount(), 'following_count' => $profile->followingCount(), 'statuses_count' => (int) $profile->statusCount(), diff --git a/app/Transformer/Api/NotificationTransformer.php b/app/Transformer/Api/NotificationTransformer.php index 3463ed00e..c9616632d 100644 --- a/app/Transformer/Api/NotificationTransformer.php +++ b/app/Transformer/Api/NotificationTransformer.php @@ -21,7 +21,7 @@ class NotificationTransformer extends Fractal\TransformerAbstract return [ 'id' => (string) $notification->id, 'type' => $this->replaceTypeVerb($notification->action), - 'created_at' => (string) $notification->created_at->toISOString(), + 'created_at' => (string) $notification->created_at->format('c'), ]; } diff --git a/app/Transformer/Api/StatusStatelessTransformer.php b/app/Transformer/Api/StatusStatelessTransformer.php index 72fcbe5b4..1b6cb4543 100644 --- a/app/Transformer/Api/StatusStatelessTransformer.php +++ b/app/Transformer/Api/StatusStatelessTransformer.php @@ -25,7 +25,7 @@ class StatusStatelessTransformer extends Fractal\TransformerAbstract 'in_reply_to_account_id' => $status->in_reply_to_profile_id, 'reblog' => null, 'content' => $status->rendered ?? $status->caption, - 'created_at' => $status->created_at->toISOString(), + 'created_at' => $status->created_at->format('c'), 'emojis' => [], 'reblogs_count' => $status->shares()->count(), 'favourites_count' => $status->likes()->count(), diff --git a/app/Transformer/Api/StatusTransformer.php b/app/Transformer/Api/StatusTransformer.php index a14310f91..27f3f555f 100644 --- a/app/Transformer/Api/StatusTransformer.php +++ b/app/Transformer/Api/StatusTransformer.php @@ -23,7 +23,7 @@ class StatusTransformer extends Fractal\TransformerAbstract 'in_reply_to_account_id' => $status->in_reply_to_profile_id, 'reblog' => null, 'content' => $status->rendered ?? $status->caption, - 'created_at' => $status->created_at->toISOString(), + 'created_at' => $status->created_at->format('c'), 'emojis' => [], 'reblogs_count' => $status->reblogs_count != 0 ? $status->reblogs_count: $status->shares()->count(), 'favourites_count' => $status->likes_count != 0 ? $status->likes_count: $status->likes()->count(), From 4899ff34790280a5a11298a4ac035f8a3dd3d5e8 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Fri, 20 Sep 2019 23:56:00 -0600 Subject: [PATCH 54/63] Update AccounTransformer --- app/Transformer/Api/AccountTransformer.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Transformer/Api/AccountTransformer.php b/app/Transformer/Api/AccountTransformer.php index 42a35c149..45d48ff08 100644 --- a/app/Transformer/Api/AccountTransformer.php +++ b/app/Transformer/Api/AccountTransformer.php @@ -36,13 +36,13 @@ class AccountTransformer extends Fractal\TransformerAbstract 'header_static' => null, 'header_bg' => $profile->header_bg, 'moved' => null, - 'fields' => [], + 'fields' => null, 'bot' => null, 'website' => $profile->website, 'software' => 'pixelfed', 'is_admin' => (bool) $is_admin, 'last_status_at' => null, - 'emojis' => [], + 'emojis' => null, ]; } From 6a80146b0cc030cb24bd98b1a1d16de2280e2038 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sat, 21 Sep 2019 00:02:09 -0600 Subject: [PATCH 55/63] Update AccountTransformer --- app/Transformer/Api/AccountTransformer.php | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/app/Transformer/Api/AccountTransformer.php b/app/Transformer/Api/AccountTransformer.php index 45d48ff08..de494c5cb 100644 --- a/app/Transformer/Api/AccountTransformer.php +++ b/app/Transformer/Api/AccountTransformer.php @@ -28,21 +28,20 @@ class AccountTransformer extends Fractal\TransformerAbstract 'followers_count' => $profile->followerCount(), 'following_count' => $profile->followingCount(), 'statuses_count' => (int) $profile->statusCount(), - 'note' => $profile->bio, + 'note' => $profile->bio ?? '', 'url' => $profile->url(), 'avatar' => $profile->avatarUrl(), 'avatar_static' => $profile->avatarUrl(), - 'header' => null, - 'header_static' => null, + 'header' => '', + 'header_static' => '', 'header_bg' => $profile->header_bg, + 'emojis' => [], 'moved' => null, 'fields' => null, - 'bot' => null, + 'bot' => false, 'website' => $profile->website, 'software' => 'pixelfed', 'is_admin' => (bool) $is_admin, - 'last_status_at' => null, - 'emojis' => null, ]; } From a3404a20e1daf455c348778969766ce44628bb63 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Mon, 23 Sep 2019 18:47:41 -0600 Subject: [PATCH 56/63] Update FollowerController, fix unfollow bug --- app/Http/Controllers/FollowerController.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/Http/Controllers/FollowerController.php b/app/Http/Controllers/FollowerController.php index dfac38ce4..97a3700d2 100644 --- a/app/Http/Controllers/FollowerController.php +++ b/app/Http/Controllers/FollowerController.php @@ -38,7 +38,6 @@ class FollowerController extends Controller { $user = Auth::user()->profile; - $target = Profile::where('id', '!=', $user->id)->whereNull('status')->findOrFail($item); $private = (bool) $target->is_private; $remote = (bool) $target->domain; @@ -54,7 +53,7 @@ class FollowerController extends Controller $isFollowing = Follower::whereProfileId($user->id)->whereFollowingId($target->id)->exists(); - if($private == true && $isFollowing == 0 || $remote == true) { + if($private == true && $isFollowing == 0 && $remote == true) { if($user->following()->count() >= Follower::MAX_FOLLOWING) { abort(400, 'You cannot follow more than ' . Follower::MAX_FOLLOWING . ' accounts'); } From 043b3b51dd4e08e02bf9757e24cdda87293d8c37 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Mon, 23 Sep 2019 19:08:45 -0600 Subject: [PATCH 57/63] Update BaseApiController, add source to verify_credentials endpoint --- app/Http/Controllers/Api/BaseApiController.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Api/BaseApiController.php b/app/Http/Controllers/Api/BaseApiController.php index f33b6e0ff..7874ed2db 100644 --- a/app/Http/Controllers/Api/BaseApiController.php +++ b/app/Http/Controllers/Api/BaseApiController.php @@ -306,7 +306,15 @@ class BaseApiController extends Controller $res = Cache::remember('user:account:id:'.$id, now()->addHours(6), function() use($id) { $profile = Profile::whereNull('status')->whereUserId($id)->firstOrFail(); $resource = new Fractal\Resource\Item($profile, new AccountTransformer()); - return $this->fractal->createData($resource)->toArray(); + $res = $this->fractal->createData($resource)->toArray(); + $res['source'] = [ + 'privacy' => $profile->is_private ? 'private' : 'public', + 'sensitive' => $profile->cw ? true : false, + 'language' => 'en', + 'note' => '', + 'fields' => [] + ]; + return $res; }); return response()->json($res); From db20565ca153bd28019847d623b3ee44359acea5 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Mon, 23 Sep 2019 19:14:32 -0600 Subject: [PATCH 58/63] Add png logo --- public/img/pixelfed-icon-color.png | Bin 0 -> 199239 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 public/img/pixelfed-icon-color.png diff --git a/public/img/pixelfed-icon-color.png b/public/img/pixelfed-icon-color.png new file mode 100644 index 0000000000000000000000000000000000000000..6e0efdaaa6dacb92674f3ebea2d64cb9ff41562a GIT binary patch literal 199239 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%0DUvu6~ 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Žub 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

x7 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 iKoL*`6oE$(f&T#HC6J1}gBYIx0000 Date: Mon, 23 Sep 2019 19:15:18 -0600 Subject: [PATCH 59/63] Update api, replace svg logo with png --- app/Http/Controllers/Api/ApiV1Controller.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/Api/ApiV1Controller.php b/app/Http/Controllers/Api/ApiV1Controller.php index 3347b0289..3cc31514e 100644 --- a/app/Http/Controllers/Api/ApiV1Controller.php +++ b/app/Http/Controllers/Api/ApiV1Controller.php @@ -100,7 +100,7 @@ class ApiV1Controller extends Controller 'status_count' => 0, 'domain_count' => 0 ], - 'thumbnail' => config('app.url') . '/img/pixelfed-icon-color.svg', + 'thumbnail' => config('app.url') . '/img/pixelfed-icon-color.png', 'title' => 'Pixelfed (' . config('pixelfed.domain.app') . ')', 'uri' => config('app.url'), 'urls' => [], From ac0ec74c3d229b224d739dc3336c27b4cb026dc0 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Mon, 23 Sep 2019 19:39:41 -0600 Subject: [PATCH 60/63] Update AccountTransformer --- app/Transformer/Api/AccountTransformer.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/Transformer/Api/AccountTransformer.php b/app/Transformer/Api/AccountTransformer.php index de494c5cb..53b49c38a 100644 --- a/app/Transformer/Api/AccountTransformer.php +++ b/app/Transformer/Api/AccountTransformer.php @@ -37,10 +37,9 @@ class AccountTransformer extends Fractal\TransformerAbstract 'header_bg' => $profile->header_bg, 'emojis' => [], 'moved' => null, - 'fields' => null, + 'fields' => [], 'bot' => false, 'website' => $profile->website, - 'software' => 'pixelfed', 'is_admin' => (bool) $is_admin, ]; } From 481911d64f2662105e1278e0ac4fcf6a11d21327 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Mon, 23 Sep 2019 20:21:36 -0600 Subject: [PATCH 61/63] Update compiled assets --- public/js/activity.js | Bin 7194 -> 7212 bytes public/js/collectioncompose.js | Bin 9967 -> 9970 bytes public/js/collections.js | Bin 16741 -> 16748 bytes public/js/compose-classic.js | Bin 23344 -> 23369 bytes public/js/compose.js | Bin 88145 -> 88174 bytes public/js/profile.js | Bin 63285 -> 63366 bytes public/js/status.js | Bin 65247 -> 65221 bytes public/js/timeline.js | Bin 72856 -> 73016 bytes public/mix-manifest.json | Bin 1655 -> 1655 bytes 9 files changed, 0 insertions(+), 0 deletions(-) diff --git a/public/js/activity.js b/public/js/activity.js index 104bd14dedbb10be102cfd69a8b7ea8c2f9e26f8..d6e4fbad067aba8e9108541026fdd885b380d547 100644 GIT binary patch delta 35 icmbPbvBqM9JsU?sW<_dFT58H>JGRA)2;KvBD-i(dYYgE4 delta 17 ZcmZ2uG0S3uJ=DVtr`s@YhIA`=TYALii_<}f!fGO$dxNZNc= zKAeqBDcs*tUum*|niNYxnq$~zKQ%6CRvi#?V!A6_?ZhozU=t?qHdj%|(|~Bww9eDZ Y)5z4+ORTNciH!(qvx;R}RDE6iai16tl^*9J<()Eb~Ldl_p4hY3rOwejoe(qa5FX^mJ4TN0cn`5pen@z ZvShQJDwi~Gtxj~bp@oh?Y;3HiH2~%VCwu?^ diff --git a/public/js/compose-classic.js b/public/js/compose-classic.js index 2fc110c35bcebbf54d423c9f23a34cd443e3f985..64a1d15e002b11b6eee9ea6aeee82202f4105bc6 100644 GIT binary patch delta 1639 zcmZ`)O>7%Q6qXYwbt4?Arg45D_D0>#WH)Okh$!)P;zCPRR6;5c2yj->*gKB5tar@p zIx%v#IdDMYfQW`l91s%XibTOu#Q`Kh2q{MnoRENCxbS!Bg&S{e$E_&%FnaUm{q6VO z_k8Pi?C5svowZMYJ%|lboy+RLhpQYHf;^%mM+o7D4 zV?!3qv>C_fuKic^AwJc#d(3JgC@NiRSY$TK+f${fc=nR{g#pdz)fah*FJ zQnoyB-lZZfvhH} zX|AfsFLH}yayYDT5q(b->47kU1Q6rF00P3QSoMpMVD0ZCM^!VTxNH@ogE)D(qmHN` zMHBM#;n|pwKMY?O0vvTAr%yB=iHay2+kTnX+0!;rY#PwT-9<&?7%Vyhb8N@)115-z^YDyZ;uR_luN*ksL%2odF9|(HW%A^m_zSs}(qUmb{u+Jt z+Mxy7!?)Jp_*RjBo~$IG4$=xC(bmZJP!x&EuSTY0wEg4Adoh<1Ui1yewoIpjD8w}c ztN5B`MqqUs0Dy_})TmPt^wAf9eos{t7V^8VAmWZ6IP_G6c3RaCk!O%%f9@s`mDgAe_B`0N3!mb zR@wJKUb6HWvmFZJvZedHAI~vio^~d9*s<{)Z^vZ;_qsDItQLEi636J52Fy7+GY|RyI5RWKG4#|Y4deqRRHnvjr|Eqx zGrKIhIsQ~!VBM2*sg%4sJ_cncQmGikn45S5E+0)y#$a&2n7nbei>Pzlx<1ncaUzN! z4@O4F?Wu)xUCaJd^ew#ziD*NBEl^Y5np%%>`PY;S>9(dHPf~35`_JVE(^EDDCJ=zD z>bUl^+-ANhip+`-6s*Q~*~RDqc*ZO+>{V6>U@Q4d1Wz)6n<1cE^qvn4TCX$D?)q>X zhM`VhYF?51gXhL0t|-`a3=i-!XsAb|kux(do>Q0ln6=t_L=ieL{phRY#ACteG#aV#Ax0*b*m%a?6a0wW1@?Kp?sW>iEV1|3W zxv09S<6zm{rEF&!mCpL$^W*LB)vpKcB|F4-697DNkP>|qtWl7zUa?`{!bT;VrR%I5 zAZk#Ie0lBVRQsFd6=1vk`xzB_klvVtb8X|%b-up11cMV8FsysgaJf#Ip`3ni9Utqs ywgmIkVQji*PTMy(++?-~nW9It3OzM!R-p|yfd32DtaDfx0DZBzs>AAp)$k9uUKUsY delta 1618 zcmZ`(OKclO7}lnFR-~!iJnAGZ&W3JwvfIt0pfuhLMx~TO6{_-RrJ5xjd&kL?^^TcY zCn>4Z0}>!1RY=nV7Y;pxN-ImbAOshXf{=Owap0lcxpCmiKel5k3VRs+GxI-YzyJIG z-5ulpj`8tgk2!nkU1Da{wZV~Y+hngTpHWkNuEEvoeT%T(?lT`O-ZBnwSEw(IyQc-p zC0U!}S&XspSRB&LizVBfnK4mLWdD5%hs+UK=?HbF!#T{6Vkzsy$EucK1~ zjrz!EUTjO`5w+W~+sm;{uyjqeH|VHu54?DYAov_JGYxg%C8M2JpA^U|^0-J6JI@2; zUFR&e%{OC6zfMGkDAjrA7QEBvOUW9OUPR;7WX{>! zcEdDn(;@0%*SJB{A6?IN0n#o}bKRTA^dpMiiY)R9eJR9dND^{#{iNv#1RmdYf7Qt? zi>nWM&P@|kbG54!uhLZ}6Dn|ovT$ujIL?)-aWP>$w$T<>fA#3@KGnOY?)Q~?p&H(* zLAv7yS2Eh4W9gAfCAwj2d|V<{t7RG|5+Rq@KRx(~5pgW?(qm!Zvy#mrr6*`fI*zY# zYG4moktOa`h)CMN69B$-lqZ2Lo3~)1MjQmRj`ksL1gN`D3|}CDOA)HkNYX~@Vw?{e zL8MXWKjLDqQk83V;gK>rg)dY`|Jk+w>m^VEdg&5Oy#kRmC!lps)6Qz!jqz4dO0eew zw@gDuz?=_U$*ZDBmq`V-r-GUfO%HOgsC)hCUJ~Ff7G_EPVgKz80RFAR$l&!44}ad& z)I#c*A=Dcw2J6?UA>hD|smT%IPRs$`c*QG##O$~lMJ{tmec(vh7~q(B?UEpdj|L|p z?-zq(hXjHKN?ZjYA)l+C2g@n`h;aO-Fs=-}&`FRRtG%INwKH@Cp7Z_CumL&thTnq? z9XV>iJGPH*pJ*b*_FK{x55Y{c-j0C^L`|fpr<$JaZnr&SO%gp8z!%h}MEY6y(+BAY z${inlrk^9f-B+Qmjiy5mp7ke4Re8FF-mp0LRwLatVwg zNkwvo0tu-N3exx4L{pi@VKYX++^M;Z5tkmj+%sQTSU9!tv|1lqY1_YyZM5yHBdqI?#_>5Eo9+bpq&n!vdh<}X`O|N7iagEXcV zc>M?Kr;hq(=+9mgh8?p_Jr7~Ffpy`02xAh)9KKk%PK$}n>)*^@8imTKWor>g>a8%F zxtbKnmjDzkzD>iNSek|ICtfT|8^DnL*{IzDgt9`tvpiz`GcV>pKs!;-SpKew-XdBSX=TEyZ;6TNH12KjU4FCWD diff --git a/public/js/compose.js b/public/js/compose.js index d582761d2d368b2bbcc7a9b63e8b18833829785c..f4752f38f77a7d96426db2194d58eae1731ea5db 100644 GIT binary patch delta 528 zcmcb(f%V-6)(u{Ao4?CtF|oLsx>-#2my=>i^3BwqoGaJ4IZ?5ZjZG<1+ud1d^36PT zQIHBHP3ug(JdHd}y~J9b$iTF4ke1Er+PQ)(NX1iKhUZ9$oE={1&+Ahh-^Sj)E ztmj?oK$5@PA1D{!tq3xuTbj{t^W5%QY33@8qREEN!kZ12*D?Z)ShqqCWcIoh5}UuS z5@822xi%RB#cejN0*Y^bzU4Pi)#T?}Hq)$ delta 525 zcmaF2f%W1B)(u{AY!>N7RZ3Qq4UEOvG?YSv-AyMuXmoA%lFMS+9Ix2O#sU^vZyCyA znq+B~YMz=jna3&)!6~vTLvTJ=)gm~h)}9E?G3z7*$H2yxA7)ytRYrbUYSCmv8->Yp zY|J*xX><#2zGUNQ#8RA6kUII-A32G##3F?}+e{55uv0ayGxhQ`@-+1lHw)$;<7BLw ze51mg(QmRqr73fjM#*HxM&ZrTm7+{Qp~C7^AbGv|IFOuQvw+cWvqP;cFHlEZmnKkX zeV63qg zu9ar?((eheGpurnf=z(n9utH+<_f;b7Kqk*7L!h|brd2@k%`dn72CAC; za*Nz#=It9Gtj(9U8*|C~X_V-smF6XvWaj4qnR%MkDXBTBC8-Lj(Rr~tew$Se6@m50_!^wD* bWqTGMV-i0&M7Lj%Wz4gJ$HjEF2u2M6@(;Rw diff --git a/public/js/profile.js b/public/js/profile.js index 852acb1dfe433a9dd53de8b080a5513f3afb5966..fa20e30ba1c020745b024b28a2a6c4e449241d28 100644 GIT binary patch delta 425 zcmdn`j=AkU^M;k;90i#bsX1w>DU(--??!L}jb$g-OB5jsC~OvxY-U0cnJgeFviX>_ zF&A8P^AFW*Za8mppt0KK4#QK7aFNY{#xoH-puF_tE;F9Z0;UP5qMN(S*0Zn_1eK<4 zwzb|K#bKCgnv`smYPk8&R6F*~Pv;)xWC=5OF`0aDx7_3g4o?2Uya+EPP3vO4JdI3E zy~NEoS8bMMHm|ar=wLZHeuV&B|K#;66edqc6);4Wm7C1AQV<~^zj6VBb9|)t zgqt>b;!y)+j>6=ZM+K1u)1BSp3vcBDa?!T0{UX|;)}hTZ(mxi0suLTbV2|C diff --git a/public/js/status.js b/public/js/status.js index 538b4d4b0cfbf80855151a006bc505a63f740df7..9d3c4a2fd058a5ccf9d382051099b594f11971d6 100644 GIT binary patch delta 506 zcmccrm-*;l<_TXnFJeqKXu!sq^VP^q2#Y!?z?%uSw!$= zxvq13+UBN7mPSTNsY*I|r8zm8)~R|ascDI&IVHAvdZ`r!`9&qgwK_^>iBTC!lY4JU zv6N}2hD=sm-?>?ErWY5BOJ#=nL41y!LbT&UsPpm?9OrCox?&YGi>ISgBG~gF?}9!5esu#c z8#pMHCI{YB7X^oprggDio<^dkUSh2dD7?WkAiYY+GGXQ}CLo!~OLqxwp1XU4?Bvdy st67ym;X2XYYVw+$k_Z=^-RX(o$n8==aL(@3U{%slQi|Pdcx#;s0DwNQp#T5? delta 532 zcmX^5m-+r*<_TX}wS5!KlqOGDFU8`Q;$=E{-TKarUs4P=CmQuI^JS+bWh!av6l*Aj z`IfnC{%sl&Jh`BUO(D3XGAGrlTB$t0C`C7^C^a!#$w~=K>n7&pDAi6Dh}7I%-MNg9 z!z9Hp$zOZb~B5c+}N5JY@!L>F4F;Db`!>83@Of<=WETv#PSlT9s7qj?l(HUBq1|2g-bGq+wj zU%qxuZYx-#j@E|^qpd}+IshA#BE*(WGy;RlZA(u8G zPMEp}2|z)Jg&eQ4*yh5f1W+d#42#gvgJY+%zLkW-(_s;cpLm@;ixpz1Kz2olR zFvEw z9qlEXnA|5~Z44q!hn5&K#vtQg8$=^*6Ak5BG#BWv>M$2*BO^WE%AZLt0LbIs7u8_Z zA=z*bT{!r@>a5R?9d z`Ps+v^3l1;3tNf_Bv)u6+3AhW#E|zWy*8b9xR9(TkiC@j%A4=Cn}OFW*@MkwSVYI) zKB(rVv+5YzYYJqc|oZub2CWLMY5~k_r*T&|`#5K~uw7`zfwQijT-_N)Cld zuFmaBg>cy3_7u518*@bHk6CBk24=Mp#!pt>HP*6>X#aZT1HDRreF|5Nt$v=N@y{14 j*GYeVVQR`(N9*T**SorW-KsBopp(o^?xKr@CoO*f6~J-m delta 823 zcmY+CUr19?9LKqHvuSB+{#i`LUCiCvu6L$`(0Ow<5(KGGC~_^iJNHa)9Pe)To(*eT z(yI_@=cQ+#f{>sSQ5k{tQuZLe*-J!3LR1ui^dQx7I9KQ8{JtN4e1E^+IlsqGop+u% z=eJyw=hJ*2S$NY_F7Pv_5G330=IDd6(K;uPkaGJ)J!x*NpGC3-4Gmffl#py=73*NM z0EP@(u^F2HscBP3P*Z$eqNI0p2uMz*4S@BOp`rpz72t#oQYIYM6kb!Y+L`I(11V85 z1_YoK^93ws1+3s)4o~T}+@3MW{l>3NtcYz}qi|BUG3x|~eJXPVgf^X+1)`q(ucDY` z>AG1lSchGKv$c)T2_oF}{%-%GY69BDS zT`V60N>>>4Te7KI*p?AACh=4l1OnnNih;NwhBb&FhHa^sCF@!|&rac264Hz!B$Qa3 zaJ7x@L=4B-q9urDeTti*H`bliwEKPBLC~g;bdDUPuRdJi=*f@1GKx00Yuw#x=(rZ@ zQHlAm#ksS?3z1&Z!?o_sMJ{mTC9%v6l|+RjSP~J(-IDn3h?T@x*(G}O*S+??@|r2# diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 41f96d0dbd6d3f5385e31ea91ffe241f14cdcf8e..c73dd3fa0c3ca0936d674656006d346afb287bac 100644 GIT binary patch delta 204 zcmWN}v28*z5CBjC`VFFs#Q>>OoPBq`v&0_Mw(mRuH4H!($umUMh)FU8GoW;#d)0gG zUc2vSP={O{)TDz-X9VK=-+2{WieYTIQ==Ml1sr8w*A&=EtPGB(Ud=jLqWQZ%h0!x* zPh#8@iL{!udE6Y{6)9$om4$mOPzl@PwmGdnP>X0Y&&Goyf;OIC%TGu$A|fPfIJ^rC XHlNSsyyq^e8L1{5=}jn~+spPJr_4Iw delta 204 zcmWN~F;0Uq3_xMERhOz85eHyqu#?zvB<{iN*zo~6mjkdNt;k2du+1`W#FITfsWl^YJq=N;nf($=sr; ZNAYz#ULR*3VVJkCsI;ETcsjkE{sC~fJmmlY From 58e8ac4d44f5aaccc3b15afaa605a0193e6d4e62 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Mon, 23 Sep 2019 22:35:31 -0600 Subject: [PATCH 62/63] Update Timeline component --- resources/assets/js/components/Timeline.vue | 83 ++++++--------------- 1 file changed, 22 insertions(+), 61 deletions(-) diff --git a/resources/assets/js/components/Timeline.vue b/resources/assets/js/components/Timeline.vue index 2e90770e9..a6904c652 100644 --- a/resources/assets/js/components/Timeline.vue +++ b/resources/assets/js/components/Timeline.vue @@ -517,13 +517,6 @@ beforeMount() { this.fetchProfile(); this.fetchTimelineApi(); - - // if(this.config.announcement.enabled == true) { - // let msg = $('

') - // .addClass('alert alert-warning mb-0 rounded-0 text-center font-weight-bold') - // .html(this.config.announcement.message); - // $('body').prepend(msg); - // } }, mounted() { @@ -602,7 +595,7 @@ axios.get(apiUrl, { params: { max_id: this.max_id, - limit: 6 + limit: 4 } }).then(res => { let data = res.data; @@ -611,15 +604,20 @@ this.ids = ids; this.min_id = Math.max(...ids); this.max_id = Math.min(...ids); - $('.timeline .pagination').removeClass('d-none'); this.loading = false; - if(this.feed.length == 6) { - this.fetchHashtagPosts(); + $('.timeline .pagination').removeClass('d-none'); + if(this.feed.length == 4) { this.fetchTimelineApi(); - } else { + } + if(this.hashtagPosts.length == 0) { this.fetchHashtagPosts(); } }).catch(err => { + swal( + 'Oops, something went wrong', + 'Please reload the page.', + 'error' + ); }); }, @@ -645,7 +643,7 @@ axios.get(apiUrl, { params: { max_id: this.max_id, - limit: 9 + limit: 6 }, }).then(res => { if (res.data.length && this.loading == false) { @@ -671,32 +669,6 @@ }); }, - loadMore(event) { - let homeTimeline = '/api/pixelfed/v1/timelines/home'; - let localTimeline = '/api/pixelfed/v1/timelines/public'; - let apiUrl = this.scope == 'home' ? homeTimeline : localTimeline; - event.target.innerText = 'Loading...'; - axios.get(apiUrl, { - params: { - page: this.page, - }, - }).then(res => { - if (res.data.length && this.loading == false) { - let data = res.data; - let ids = data.map(status => status.id); - this.min_id = Math.min(...ids); - if(this.page == 1) { - this.max_id = Math.max(...ids); - } - this.feed.push(...data); - this.page += 1; - this.loading = false; - event.target.innerText = 'Load more posts'; - } else { - } - }); - }, - reportUrl(status) { let type = status.in_reply_to ? 'comment' : 'post'; let id = status.id; @@ -752,27 +724,11 @@ return ts.toDateString() + ' ' + ts.toLocaleTimeString(); }, - editUrl(status) { - return status.url + '/edit'; - }, - redirect(url) { window.location.href = url; return; }, - replyUrl(status) { - let username = this.profile.username; - let id = status.account.id == this.profile.id ? status.id : status.in_reply_to_id; - return '/p/' + username + '/' + id; - }, - - mentionUrl(status) { - let username = status.account.username; - let id = status.id; - return '/p/' + username + '/' + id; - }, - statusOwner(status) { let sid = status.account.id; let uid = this.profile.id; @@ -1089,6 +1045,8 @@ }, expRec() { + return; + if(this.config.ab.rec == false) { return; } @@ -1099,6 +1057,8 @@ }, expRecFollow(id, index) { + return; + if(this.config.ab.rec == false) { return; } @@ -1170,6 +1130,8 @@ }, refreshSuggestions() { + return; + let el = event.target.parentNode; if(el.classList.contains('disabled') == true) { return; @@ -1226,10 +1188,10 @@ ctxMenu(status) { this.ctxMenuStatus = status; - let payload = '