Merge pull request #591 from pixelfed/frontend-ui-refactor

Frontend ui refactor
This commit is contained in:
daniel 2018-11-24 23:16:18 -07:00 committed by GitHub
commit ff535072a8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 53 additions and 70 deletions

View file

@ -2,7 +2,7 @@
namespace App; namespace App;
use Auth; use Auth, Cache;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
use Storage; use Storage;
@ -37,6 +37,7 @@ class Status extends Model
public function viewType() public function viewType()
{ {
return Cache::remember('status:view-type:'.$this->id, 40320, function() {
$media = $this->firstMedia(); $media = $this->firstMedia();
$mime = explode('/', $media->mime)[0]; $mime = explode('/', $media->mime)[0];
$count = $this->media()->count(); $count = $this->media()->count();
@ -44,12 +45,13 @@ class Status extends Model
if($count > 1) { if($count > 1) {
$type = ($type == 'image') ? 'album' : 'video-album'; $type = ($type == 'image') ? 'album' : 'video-album';
} }
return $type; return $type;
});
} }
public function thumb($showNsfw = false) public function thumb($showNsfw = false)
{ {
return Cache::remember('status:thumb:'.$this->id, 40320, function() use ($showNsfw) {
$type = $this->viewType(); $type = $this->viewType();
$is_nsfw = !$showNsfw ? $this->is_nsfw : false; $is_nsfw = !$showNsfw ? $this->is_nsfw : false;
if ($this->media->count() == 0 || $is_nsfw || !in_array($type,['image', 'album', 'video'])) { if ($this->media->count() == 0 || $is_nsfw || !in_array($type,['image', 'album', 'video'])) {
@ -57,6 +59,7 @@ class Status extends Model
} }
return url(Storage::url($this->firstMedia()->thumbnail_path)); return url(Storage::url($this->firstMedia()->thumbnail_path));
});
} }
public function url() public function url()

View file

@ -72,41 +72,6 @@
@push('scripts') @push('scripts')
<script type="text/javascript"> <script type="text/javascript">
$(document).on('click', '.modal-update', function(e) {
swal({
title: 'Upload Photo',
content: {
element: 'input',
attributes: {
placeholder: 'Upload your photo',
type: 'file',
name: 'photoUpload',
id: 'photoUploadInput'
}
},
buttons: {
confirm: {
text: 'Upload'
}
}
}).then((res) => {
const input = $('#photoUploadInput')[0];
const photo = input.files[0];
const form = new FormData();
form.append("upload", photo);
axios.post('/api/v1/avatar/update', form, {
headers: {
'Content-Type': 'multipart/form-data'
}
}).then((res) => {
swal('Success', 'Your photo has been successfully updated! It may take a few minutes to update across the site.', 'success');
}).catch((res) => {
let msg = res.response.data.errors.upload[0];
swal('Something went wrong', msg, 'error');
});
});
});
$(document).on('click', '.modal-close', function(e) { $(document).on('click', '.modal-close', function(e) {
swal.close(); swal.close();
@ -133,26 +98,41 @@
$(document).on('click', '.change-profile-photo', function(e) { $(document).on('click', '.change-profile-photo', function(e) {
e.preventDefault(); e.preventDefault();
var content = $('<ul>').addClass('list-group');
var upload = $('<li>').text('Upload photo').addClass('list-group-item');
content.append(upload);
const list = document.createElement('ul');
list.className = 'list-group';
const uploadPhoto = document.createElement('li');
uploadPhoto.innerHTML = 'Upload Photo';
uploadPhoto.className = 'list-group-item font-weight-bold text-primary modal-update';
list.appendChild(uploadPhoto);
const cancel = document.createElement('li');
cancel.innerHTML = 'Cancel';
cancel.className = 'list-group-item modal-close';
list.appendChild(cancel);
swal({ swal({
title: 'Change Profile Photo', title: 'Upload Photo',
content: list, content: {
buttons: false element: 'input',
attributes: {
placeholder: 'Upload your photo',
type: 'file',
name: 'photoUpload',
id: 'photoUploadInput'
}
},
buttons: {
confirm: {
text: 'Upload'
}
}
}).then((res) => {
if(!res) {
return;
}
const input = $('#photoUploadInput')[0];
const photo = input.files[0];
const form = new FormData();
form.append("upload", photo);
axios.post('/api/v1/avatar/update', form, {
headers: {
'Content-Type': 'multipart/form-data'
}
}).then((res) => {
swal('Success', 'Your photo has been successfully updated! It may take a few minutes to update across the site.', 'success');
}).catch((res) => {
let msg = res.response.data.errors.upload[0];
swal('Something went wrong', msg, 'error');
});
}); });
}); });
</script> </script>