79 lines
2.1 KiB
Vue
79 lines
2.1 KiB
Vue
<template>
|
|
<div class="modal__inner-1" role="dialog">
|
|
<div class="modal__inner-2">
|
|
<button class="modal__close-button button not-tabbable" @click="config.reject()" v-title="'Close modal'">
|
|
<icon-close></icon-close>
|
|
</button>
|
|
<div class="modal__sponsor-button" v-if="showSponsorButton">
|
|
StackEdit is <a class="not-tabbable" target="_blank" href="https://github.com/benweet/stackedit/">open source</a>, please consider
|
|
<a class="not-tabbable" href="javascript:void(0)" @click="sponsor">sponsoring</a> for just $5.
|
|
</div>
|
|
<slot></slot>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import { mapGetters } from 'vuex';
|
|
import googleHelper from '../../../services/providers/helpers/googleHelper';
|
|
import syncSvc from '../../../services/syncSvc';
|
|
|
|
export default {
|
|
computed: {
|
|
...mapGetters('modal', [
|
|
'config',
|
|
]),
|
|
showSponsorButton() {
|
|
const { type } = this.$store.getters['modal/config'];
|
|
return !this.$store.getters.isSponsor && type !== 'sponsor' && type !== 'signInForSponsorship';
|
|
},
|
|
},
|
|
methods: {
|
|
async sponsor() {
|
|
try {
|
|
if (!this.$store.getters['workspace/sponsorToken']) {
|
|
// User has to sign in
|
|
await this.$store.dispatch('modal/open', 'signInForSponsorship');
|
|
await googleHelper.signin();
|
|
syncSvc.requestSync();
|
|
}
|
|
if (!this.$store.getters.isSponsor) {
|
|
await this.$store.dispatch('modal/open', 'sponsor');
|
|
}
|
|
} catch (e) { /* cancel */ }
|
|
},
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
@import '../../../styles/variables.scss';
|
|
|
|
.modal__close-button {
|
|
position: absolute;
|
|
top: 8px;
|
|
right: 8px;
|
|
color: rgba(0, 0, 0, 0.5);
|
|
width: 32px;
|
|
height: 32px;
|
|
padding: 2px;
|
|
|
|
&:active,
|
|
&:focus,
|
|
&:hover {
|
|
color: rgba(0, 0, 0, 0.67);
|
|
}
|
|
}
|
|
|
|
.modal__sponsor-button {
|
|
display: inline-block;
|
|
color: darken($error-color, 10%);
|
|
background-color: transparentize($error-color, 0.85);
|
|
border-radius: $border-radius-base;
|
|
font-size: 0.9em;
|
|
padding: 0.75em 1.5em;
|
|
margin-bottom: 1.2em;
|
|
line-height: 1.55;
|
|
}
|
|
</style>
|