diff --git a/app/Http/Controllers/ComposeController.php b/app/Http/Controllers/ComposeController.php index b20afab99..56e137441 100644 --- a/app/Http/Controllers/ComposeController.php +++ b/app/Http/Controllers/ComposeController.php @@ -15,7 +15,8 @@ use App\{ Profile, Place, Status, - UserFilter + UserFilter, + UserSetting }; use App\Transformer\Api\{ MediaTransformer, @@ -661,4 +662,25 @@ class ComposeController extends Controller 'finished' => $finished ]; } + + public function composeSettings(Request $request) + { + $uid = $request->user()->id; + + return Cache::remember('profile:compose:settings:' . $uid, now()->addHours(12), function() use($uid) { + $res = UserSetting::whereUserId($uid)->first(); + + if(!$res) { + return [ + 'default_license' => null, + 'media_descriptions' => false + ]; + } + + return json_decode($res->compose_settings, true) ?? [ + 'default_license' => null, + 'media_descriptions' => false + ]; + }); + } } diff --git a/app/Http/Controllers/SettingsController.php b/app/Http/Controllers/SettingsController.php index 65dfca5d0..3f8ef9879 100644 --- a/app/Http/Controllers/SettingsController.php +++ b/app/Http/Controllers/SettingsController.php @@ -7,6 +7,7 @@ use App\Following; use App\ProfileSponsor; use App\Report; use App\UserFilter; +use App\UserSetting; use Auth, Cookie, DB, Cache, Purify; use Illuminate\Support\Facades\Redis; use Carbon\Carbon; @@ -221,7 +222,7 @@ class SettingsController extends Controller $sponsors->sponsors = json_encode($res); $sponsors->save(); $sponsors = $res; - return redirect(route('settings'))->with('status', 'Sponsor settings successfully updated!');; + return redirect(route('settings'))->with('status', 'Sponsor settings successfully updated!'); } public function timelineSettings(Request $request) @@ -249,7 +250,52 @@ class SettingsController extends Controller } else { Redis::zrem('pf:tl:replies', $pid); } - return redirect(route('settings.timeline')); + return redirect(route('settings'))->with('status', 'Timeline settings successfully updated!');; + } + + public function mediaSettings(Request $request) + { + $setting = UserSetting::whereUserId($request->user()->id)->firstOrFail(); + $compose = $setting->compose_settings ? json_decode($setting->compose_settings, true) : [ + 'default_license' => null, + 'media_descriptions' => false + ]; + return view('settings.media', compact('compose')); + } + + public function updateMediaSettings(Request $request) + { + $this->validate($request, [ + 'default' => 'required|int|min:1|max:16', + 'sync' => 'nullable', + 'media_descriptions' => 'nullable' + ]); + + $license = $request->input('default'); + $sync = $request->input('sync') == 'on'; + $media_descriptions = $request->input('media_descriptions') == 'on'; + + $setting = UserSetting::whereUserId($request->user()->id)->firstOrFail(); + $compose = json_decode($setting->compose_settings, true); + $changed = false; + + if(!isset($compose['default_license']) || $compose['default_license'] !== $license) { + $compose['default_license'] = (int) $license; + $changed = true; + } + + if(!isset($compose['media_descriptions']) || $compose['media_descriptions'] !== $media_descriptions) { + $compose['media_descriptions'] = $media_descriptions; + $changed = true; + } + + if($changed) { + $setting->compose_settings = json_encode($compose); + $setting->save(); + Cache::forget('profile:compose:settings:' . $request->user()->id); + } + + return redirect(route('settings'))->with('status', 'Media settings successfully updated!'); } } diff --git a/database/migrations/2021_07_23_062326_add_compose_settings_to_user_settings_table.php b/database/migrations/2021_07_23_062326_add_compose_settings_to_user_settings_table.php new file mode 100644 index 000000000..58837cab3 --- /dev/null +++ b/database/migrations/2021_07_23_062326_add_compose_settings_to_user_settings_table.php @@ -0,0 +1,46 @@ +json('compose_settings')->nullable(); + }); + + Schema::table('media', function (Blueprint $table) { + $table->text('caption')->change(); + $table->index('profile_id'); + $table->index('mime'); + $table->index('license'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('user_settings', function (Blueprint $table) { + $table->dropColumn('compose_settings'); + }); + + Schema::table('media', function (Blueprint $table) { + $table->string('caption')->change(); + $table->dropIndex('profile_id'); + $table->dropIndex('mime'); + $table->dropIndex('license'); + }); + } +} diff --git a/resources/assets/js/components/Activity.vue b/resources/assets/js/components/Activity.vue index a5ef1525b..751cab0ae 100644 --- a/resources/assets/js/components/Activity.vue +++ b/resources/assets/js/components/Activity.vue @@ -134,20 +134,16 @@ export default { window._sharedData.curUser = res.data; window.App.util.navatar(); }); - axios.get('/api/pixelfed/v1/notifications', { - params: { - pg: true - } - }) + axios.get('/api/pixelfed/v1/notifications?pg=true') .then(res => { let data = res.data.filter(n => { - if(n.type == 'share' && !status) { + if(n.type == 'share' && !n.status) { return false; } - if(n.type == 'comment' && !status) { + if(n.type == 'comment' && !n.status) { return false; } - if(n.type == 'mention' && !status) { + if(n.type == 'mention' && !n.status) { return false; } return true; @@ -167,8 +163,7 @@ export default { } axios.get('/api/pixelfed/v1/notifications', { params: { - pg: true, - page: this.notificationCursor + max_id: this.notificationMaxId } }).then(res => { if(res.data.length) { diff --git a/resources/assets/js/components/ComposeModal.vue b/resources/assets/js/components/ComposeModal.vue index 0aa4f8b63..893bacf92 100644 --- a/resources/assets/js/components/ComposeModal.vue +++ b/resources/assets/js/components/ComposeModal.vue @@ -100,10 +100,10 @@ v-for="(item, index) in availableLicenses" class="list-group-item cursor-pointer" :class="{ - 'text-primary': licenseIndex === index, - 'font-weight-bold': licenseIndex === index + 'text-primary': licenseId === item.id, + 'font-weight-bold': licenseId === item.id }" - @click="toggleLicense(index)"> + @click="toggleLicense(item)"> {{item.name}} @@ -336,7 +336,13 @@
Tag people
Add license NEW
++ Add license NEW + + {{licenseTitle}} + + +
Add location
@@ -591,11 +597,11 @@ {{media[carouselCursor].license ? media[carouselCursor].license.length : 0}}/140 --> -