stash
This commit is contained in:
parent
7c91661be2
commit
796fef81be
37 changed files with 3404 additions and 108 deletions
|
|
@ -23,13 +23,18 @@
|
|||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="text-center">
|
||||
<img alt="Charles Hall"
|
||||
src="/assets/img/avatars/avatar.png"
|
||||
class="rounded-circle img-responsive mt-2" width="128"
|
||||
height="128"/>
|
||||
<authenticated-image :src="profilePictureSrc" :owner="user"
|
||||
:refresh-key="profilePictureRefreshKey"
|
||||
:alt="user" :title="user"
|
||||
img-class="rounded-circle img-responsive mt-2"
|
||||
:width="128" :height="128" fit="cover"/>
|
||||
<div class="mt-2">
|
||||
<span class="btn btn-primary"><i
|
||||
class="fas fa-upload"></i> Upload</span>
|
||||
<fs-file-source @input="uploadPicture">
|
||||
<span class="btn btn-primary"><i class="fas fa-upload"></i> Upload</span>
|
||||
</fs-file-source>
|
||||
<button class="btn btn-outline-secondary ml-2" type="button" @click="removePicture">
|
||||
Remove
|
||||
</button>
|
||||
</div>
|
||||
<small>For best results, use an image at least 128px by
|
||||
128px in .jpg format</small>
|
||||
|
|
@ -99,10 +104,38 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import {mapActions, mapState} from "vuex";
|
||||
import AuthenticatedImage from "@/components/AuthenticatedImage.vue";
|
||||
import FsFileSource from "@/components/inputs/FsFileSource.vue";
|
||||
|
||||
export default {
|
||||
name: 'Account',
|
||||
components: {}
|
||||
components: {AuthenticatedImage, FsFileSource},
|
||||
computed: {
|
||||
...mapState(['user', 'user_profile']),
|
||||
profilePictureSrc() {
|
||||
return this.user_profile?.profile_picture?.name || null;
|
||||
},
|
||||
profilePictureRefreshKey() {
|
||||
return this.user_profile?.profile_picture?.id || 'none';
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
...mapActions(['fetchUserProfile', 'updateUserProfilePicture']),
|
||||
async uploadPicture(files) {
|
||||
const image = files.find(file => file.mime_type?.startsWith('image/'))
|
||||
if (!image) {
|
||||
return;
|
||||
}
|
||||
await this.updateUserProfilePicture({file: image});
|
||||
},
|
||||
async removePicture() {
|
||||
await this.updateUserProfilePicture({file: null});
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.fetchUserProfile();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue