123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- <template>
- <div>
- <Dialog ref="dialog1" v-model="whatsNewVisible">
- <template #header>
- Что нового:
- </template>
- <div style="line-height: 20px; min-width: 300px">
- <div v-html="whatsNewContent"></div>
- </div>
- <span class="clickable" style="font-size: 13px" @click="openVersionHistory">Посмотреть историю версий</span>
- <template #footer>
- <q-btn class="q-px-md" color="btn2" text-color="app" dense no-caps @click="whatsNewDisable">
- Больше не показывать
- </q-btn>
- </template>
- </Dialog>
- <q-dialog ref="dialog2" v-model="donationVisible" style="z-index: 100" no-route-dismiss no-esc-dismiss no-backdrop-dismiss>
- <div class="column bg-dialog no-wrap q-pa-md">
- <div class="row justify-center q-mb-md">
- Здравствуйте, дорогие читатели!
- </div>
- <div class="q-mx-md column" style="font-size: 90%; word-break: normal">
- <div>
- Вот уже много лет мы все вместе пользуемся нашей любимой читалкой.<br><br>
- Напоминаем вам, что проект является некоммерческим и обладает такими
- достоинствами, как:
- <ul>
- <li>все функции читалки открыты и доступны совершенно бесплатно</li>
- <li>в проекте отсутствует какая-либо реклама или баннеры</li>
- <li>нет никакой регистрации и монетизации</li>
- <li>нет сбора персональных данных</li>
- <li>открытый исходный код</li>
- <li>проект постепенно улучшается, по мере возможности</li>
- </ul>
- Однако на оплату хостинга читалки и сервера обновлений автор тратит свои
- собственные средства, а также тратит свое время и силы на улучшение проекта.
- <br><br>
- Давайте поддержим наш ресурс, чтобы и дальше спокойно существовать и развиваться:
- </div>
- <q-btn style="margin: 10px 20px 10px 20px" color="green-8" no-caps @click="makeDonation">
- <q-icon class="q-mr-xs" name="la la-donate" size="24px" />
- Поддержать проект
- </q-btn>
- <div class="row justify-center q-mt-sm">
- Напомнить снова через:
- </div>
- <div class="row justify-between" style="margin: 0 20px 10px 20px">
- <q-btn style="width: 140px; margin-top: 5px" no-caps @click="donationDialogRemindLater(30)">
- 1 месяц
- </q-btn>
- <q-btn style="width: 140px; margin-top: 5px" no-caps @click="donationDialogRemindLater(60)">
- 2 месяца
- </q-btn>
- <q-btn style="width: 140px; margin-top: 5px" no-caps @click="donationDialogRemindLater(90)">
- 3 месяца
- </q-btn>
- </div>
- <div class="row justify-center q-mt-md">
- <div class="q-px-sm clickable" style="font-size: 80%" @click="openDonate">
- Помочь проекту можно в любое время
- </div>
- </div>
- </div>
- </div>
- </q-dialog>
- <Dialog ref="dialog3" v-model="urlHelpVisible">
- <template #header>
- Обнаружена невалидная ссылка в поле "URL книги".
- <br>
- </template>
- <div style="word-break: normal">
- Если вы пытаетесь вставить текст в читалку из буфера обмена, пожалуйста воспользуйтесь кнопкой
- <q-btn no-caps dense class="q-px-sm" color="btn1" size="13px" @click="loadBufferClick">
- <q-icon class="q-mr-xs" name="la la-comment" size="24px" />
- Из буфера обмена
- </q-btn>
- на странице загрузки.
- </div>
- </Dialog>
- </div>
- </template>
- <script>
- //-----------------------------------------------------------------------------
- import vueComponent from '../../vueComponent.js';
- import Dialog from '../../share/Dialog.vue';
- import * as utils from '../../../share/utils';
- import {versionHistory} from '../versionHistory';
- import rstore from '../../../store/modules/reader';
- const componentOptions = {
- components: {
- Dialog
- },
- watch: {
- settings: function() {
- this.loadSettings();
- },
- },
- };
- class ReaderDialogs {
- _options = componentOptions;
- whatsNewVisible = false;
- whatsNewContent = '';
- donationVisible = false;
- urlHelpVisible = false;
- created() {
- this.commit = this.$store.commit;
- this.loadSettings();
- }
- mounted() {
- }
- async init() {
- await this.showWhatsNew();
- await this.showDonation();
- }
- loadSettings() {
- const settings = this.settings;
- this.showWhatsNewDialog = settings.showWhatsNewDialog;
- this.showDonationDialog = settings.showDonationDialog;
- }
- async showWhatsNew() {
- const whatsNew = versionHistory[0];
- if (this.showWhatsNewDialog &&
- whatsNew.showUntil >= utils.dateFormat(new Date(), 'YYYY-MM-DD') &&
- this.whatsNewHeader != this.whatsNewContentHash) {
- await utils.sleep(2000);
- this.whatsNewContent = 'Версия ' + this.whatsNewHeader + whatsNew.content;
- this.whatsNewVisible = true;
- }
- }
- async showDonation() {
- if ((this.mode == 'omnireader' || this.mode == 'liberama') && this.showDonationDialog && this.donationNextPopup <= Date.now()) {
- await utils.sleep(3000);
- this.donationVisible = true;
- }
- }
- async showUrlHelp() {
- this.urlHelpVisible = true;
- }
- loadBufferClick() {
- this.$emit('load-buffer-toggle');
- this.urlHelpVisible = false;
- }
- donationDialogRemindLater(remindAfter = 30) {
- this.donationVisible = false;
- this.commit('reader/setDonationNextPopup', Date.now() + rstore.dayMs*remindAfter);
- }
- makeDonation() {
- utils.makeDonation();
- this.donationDialogRemindLater();
- }
- openDonate() {
- this.$emit('donate-toggle');
- }
- async copyLink(link) {
- const result = await utils.copyTextToClipboard(link);
- if (result)
- this.$root.notify.success(`Ссылка ${link} успешно скопирована в буфер обмена`);
- else
- this.$root.notify.error('Копирование не удалось');
- }
- openVersionHistory() {
- this.whatsNewVisible = false;
- this.$emit('version-history-toggle');
- }
- whatsNewDisable() {
- this.whatsNewVisible = false;
- this.commit('reader/setWhatsNewContentHash', this.whatsNewHeader);
- }
- get whatsNewHeader() {
- return `${versionHistory[0].version} (${versionHistory[0].releaseDate})`;
- }
- get mode() {
- return this.$store.state.config.mode;
- }
- get settings() {
- return this.$store.state.reader.settings;
- }
- get whatsNewContentHash() {
- return this.$store.state.reader.whatsNewContentHash;
- }
- get donationNextPopup() {
- return this.$store.state.reader.donationNextPopup;
- }
- keyHook() {
- if (this.$refs.dialog1.active || this.$refs.dialog2.active || this.$refs.dialog3.active)
- return true;
- return false;
- }
- }
- export default vueComponent(ReaderDialogs);
- //-----------------------------------------------------------------------------
- </script>
- <style scoped>
- .clickable {
- color: var(--text-anchor-color);
- text-decoration: underline;
- cursor: pointer;
- }
- .copy-icon {
- cursor: pointer;
- font-size: 120%;
- color: blue;
- }
- </style>
|