strette di mano
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="0.5.51"
|
||||
APP_VERSION="0.5.53"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="13"
|
||||
DIRECTORY_LOCAL="newfreeplanet"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="0.5.51"
|
||||
APP_VERSION="0.5.53"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="13"
|
||||
DIRECTORY_LOCAL=newfreeplanet
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="0.5.51"
|
||||
APP_VERSION="0.5.53"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="13"
|
||||
DIRECTORY_LOCAL="newfreeplanet"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="0.5.51"
|
||||
APP_VERSION="0.5.53"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="13"
|
||||
DIRECTORY_LOCAL=newfreeplanet
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
APP_VERSION="0.5.51"
|
||||
APP_VERSION="0.5.53"
|
||||
SERVICE_WORKER_FILE="service-worker.js"
|
||||
APP_ID="14"
|
||||
DIRECTORY_LOCAL="newfreeplanet"
|
||||
|
||||
@@ -72,6 +72,7 @@
|
||||
"vue-scroll-reveal": "^1.0.11",
|
||||
"vue-social-sharing": "^4.0.0-alpha4",
|
||||
"vue-svgicon": "^4.0.0-alpha.3",
|
||||
"vue-timeago3": "^2.3.0",
|
||||
"vue2-dragula": "^2.5.5",
|
||||
"vuex": "^4.1.0",
|
||||
"vuex-router-sync": "^6.0.0-rc.1"
|
||||
|
||||
@@ -37,7 +37,7 @@ module.exports = configure((ctx) => ({
|
||||
// --> boot files are part of "main.js"
|
||||
// https://v2.quasar.dev/quasar-cli/boot-files
|
||||
// boot: ['vue-i18n', 'vue-meta', 'axios', 'vee-validate', 'myconfig', 'local-storage', 'error-handler', 'globalroutines', 'vue-idb', 'dragula', 'guard'],
|
||||
boot: ['i18n', 'axios', 'vee-validate', 'myconfig', 'local-storage', 'error-handler', 'globalroutines', 'calendar', 'social-sharing'],
|
||||
boot: ['i18n', 'axios', 'vee-validate', 'myconfig', 'local-storage', 'error-handler', 'globalroutines', 'calendar', 'social-sharing', 'timeago'],
|
||||
|
||||
// https://v2.quasar.dev/quasar-cli/quasar-conf-js#Property%3A-css
|
||||
css: [
|
||||
@@ -238,8 +238,7 @@ module.exports = configure((ctx) => ({
|
||||
'Ripple',
|
||||
'ClosePopup',
|
||||
],
|
||||
// Quasar plugins
|
||||
plugins: [
|
||||
_plugins: [
|
||||
'Meta',
|
||||
'Dialog',
|
||||
'Notify',
|
||||
@@ -247,13 +246,25 @@ module.exports = configure((ctx) => ({
|
||||
'Loading',
|
||||
'AppVisibility',
|
||||
],
|
||||
get plugins_1() {
|
||||
return this._plugins;
|
||||
},
|
||||
set plugins_1(value) {
|
||||
this._plugins = value;
|
||||
},
|
||||
get plugins() {
|
||||
return this._plugins;
|
||||
},
|
||||
set plugins(value) {
|
||||
this._plugins = value;
|
||||
},
|
||||
iconSet: 'fontawesome-v5',
|
||||
lang: 'it', // Quasar language
|
||||
},
|
||||
|
||||
// animations: 'all', // --- includes all animations
|
||||
animations: 'all', // --- includes all animations
|
||||
// https://v2.quasar.dev/options/animations
|
||||
animations: [],
|
||||
// animations: [],
|
||||
|
||||
// https://v2.quasar.dev/quasar-cli/developing-ssr/configuring-ssr
|
||||
ssr: {
|
||||
|
||||
7
src/boot/timeago.ts
Executable file
7
src/boot/timeago.ts
Executable file
@@ -0,0 +1,7 @@
|
||||
//@ts-ignore
|
||||
import timeago from 'vue-timeago3'
|
||||
import { boot } from 'quasar/wrappers'
|
||||
|
||||
export default boot(({ app }) => {
|
||||
app.use(timeago)
|
||||
})
|
||||
@@ -96,10 +96,15 @@ export const shared_consts = {
|
||||
FRIENDSCMD: {
|
||||
SETTRUST: 121,
|
||||
REQFRIEND: 125,
|
||||
REQHANDSHAKE: 128,
|
||||
SETFRIEND: 132,
|
||||
SETHANDSHAKE: 133,
|
||||
REMOVE_FROM_MYFRIENDS: 144,
|
||||
REFUSE_REQ_FRIEND: 145,
|
||||
CANCEL_REQ_FRIEND: 146,
|
||||
REMOVE_FROM_MYHANDSHAKE: 147,
|
||||
REFUSE_REQ_HANDSHAKE: 148,
|
||||
CANCEL_REQ_HANDSHAKE: 149,
|
||||
BLOCK_USER: 155,
|
||||
UNBLOCK_USER: 156,
|
||||
REPORT_USER: 158,
|
||||
@@ -997,6 +1002,9 @@ export const shared_consts = {
|
||||
StatusNotifs: {
|
||||
STATUS_FRIENDS_ACCEPTED: 1,
|
||||
STATUS_FRIENDS_REFUSED: 2,
|
||||
STATUS_FRIENDS_REPORTED: 3,
|
||||
STATUS_HANDSHAKE_ACCEPTED: 10,
|
||||
STATUS_HANDSHAKE_REFUSED: 11,
|
||||
},
|
||||
|
||||
GroupsNotifs: {
|
||||
@@ -1063,6 +1071,12 @@ export const shared_consts = {
|
||||
TYPEDIR_MSGS: 7,
|
||||
ID_MSGS_NEW_REC: 1,
|
||||
|
||||
TYPEDIR_HANDSHAKE: 10,
|
||||
ID_HANDSHAKE_NEW_REC: 1,
|
||||
ID_HANDSHAKE_ACCEPTED: 2,
|
||||
ID_HANDSHAKE_REFUSED: 4,
|
||||
ID_HANDSHAKE_ACCEPTED_MY_REQUEST: 8,
|
||||
|
||||
TYPEDIR_TEST: 444,
|
||||
ID_TEST_NEW_REC: 1,
|
||||
},
|
||||
|
||||
@@ -1044,7 +1044,7 @@
|
||||
</q-table>
|
||||
|
||||
<q-page-sticky
|
||||
v-if="mytable && butt_modif_new"
|
||||
v-if="mytable && butt_modif_new && !hidetitleIfEmpty"
|
||||
position="bottom-right"
|
||||
:offset="[18, 68]"
|
||||
>
|
||||
|
||||
@@ -9,6 +9,7 @@ import { CDateTime } from '@/components/CDateTime'
|
||||
import { CMyGroup } from '@/components/CMyGroup'
|
||||
import { CMyCircuit } from '@/components/CMyCircuit'
|
||||
import { CNotifAtTop } from '@src/components/CNotifAtTop'
|
||||
import { CTimeAgo } from '@src/components/CTimeAgo'
|
||||
import { CSendCoins } from '@/components/CSendCoins'
|
||||
import { CMyUser } from '@/components/CMyUser'
|
||||
import { CCheckIfIsLogged } from '@/components/CCheckIfIsLogged'
|
||||
@@ -34,7 +35,8 @@ export default defineComponent({
|
||||
name: 'CMyActivities',
|
||||
components: {
|
||||
CProfile, CTitleBanner, CMyFieldDb, CSkill, CDateTime, CCopyBtn, CUserNonVerif, CMyFieldRec, CMyUser,
|
||||
CMyGroup, CLabel, CMyCircuit, CSendCoins, CNotifAtTop, CCheckIfIsLogged
|
||||
CMyGroup, CLabel, CMyCircuit, CSendCoins, CNotifAtTop, CCheckIfIsLogged,
|
||||
CTimeAgo
|
||||
},
|
||||
props: {
|
||||
},
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
</div>
|
||||
|
||||
<div class="last_access">
|
||||
OnLine: {{ tools.timeAgo(myuser.lasttimeonline) }}
|
||||
OnLine: <CTimeAgo :datetime="myuser.lasttimeonline" />
|
||||
</div>
|
||||
|
||||
<div v-if="myuser.reported">
|
||||
|
||||
@@ -79,7 +79,7 @@ export default defineComponent({
|
||||
// @ts-ignore
|
||||
const rectofind = circuitStore.listcircuits.find((circ: ICircuit) => circ.name === circuit.value.circuitname!)
|
||||
if (rectofind) {
|
||||
console.log('rectofind', rectofind)
|
||||
// console.log('rectofind', rectofind)
|
||||
circuit.value = rectofind
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,8 +73,14 @@ export default defineComponent({
|
||||
arr = userStore.my.profile.friends
|
||||
} else if (props.modelValue === costanti.REQ_FRIENDS) {
|
||||
arr = userStore.my.profile.req_friends
|
||||
} else if (props.modelValue === costanti.HANDSHAKE) {
|
||||
arr = userStore.my.profile.handshake
|
||||
} else if (props.modelValue === costanti.REQ_HANDSHAKE) {
|
||||
arr = userStore.my.profile.req_handshake
|
||||
} else if (props.modelValue === costanti.ASK_SENT_FRIENDS) {
|
||||
arr = userStore.my.profile.asked_friends
|
||||
} else if (props.modelValue === costanti.ASK_SENT_HANDSHAKE) {
|
||||
arr = userStore.my.profile.asked_handshake
|
||||
} else if (props.modelValue === costanti.ASK_TRUST) {
|
||||
arr = listTrusted.value.filter((user: IUserFields) => user.verified_by_aportador === undefined)
|
||||
} else if (props.modelValue === costanti.TRUSTED) {
|
||||
@@ -101,6 +107,15 @@ export default defineComponent({
|
||||
label: t('mypages.request_friends') + ' (' + numReqFriends.value + ')',
|
||||
value: costanti.REQ_FRIENDS
|
||||
})
|
||||
if (numHandShake.value > 0 || props.modelValue === costanti.HANDSHAKE)
|
||||
mybutt.push({ label: t('mypages.handshake') + ' (' + numHandShake.value + ')', value: costanti.HANDSHAKE })
|
||||
|
||||
if (numReqHandShake.value > 0 || props.modelValue === costanti.REQ_HANDSHAKE)
|
||||
mybutt.push({
|
||||
label: t('mypages.requesthandshake') + ' (' + numReqHandShake.value + ')',
|
||||
value: costanti.REQ_HANDSHAKE
|
||||
})
|
||||
|
||||
if (numAskSentFriends.value > 0 || props.modelValue === costanti.ASK_SENT_FRIENDS)
|
||||
mybutt.push({
|
||||
label: t('mypages.request_sent') + ' (' + numAskSentFriends.value + ')',
|
||||
@@ -121,11 +136,21 @@ export default defineComponent({
|
||||
return (arr) ? arr.length : 0
|
||||
})
|
||||
|
||||
const numHandShake = computed(() => {
|
||||
const arr = userStore.my.profile.handshake
|
||||
return (arr) ? arr.length : 0
|
||||
})
|
||||
|
||||
const numReqFriends = computed(() => {
|
||||
const arr = userStore.my.profile.req_friends
|
||||
return (arr) ? arr.length : 0
|
||||
})
|
||||
|
||||
const numReqHandShake = computed(() => {
|
||||
const arr = userStore.my.profile.req_handshake
|
||||
return (arr) ? arr.length : 0
|
||||
})
|
||||
|
||||
const numAskSentFriends = computed(() => {
|
||||
const arr = userStore.my.profile.asked_friends
|
||||
return (arr) ? arr.length : 0
|
||||
|
||||
@@ -83,6 +83,25 @@
|
||||
</q-btn>
|
||||
</q-item-label>
|
||||
</q-item-section>
|
||||
<q-item-section side v-else-if="visu === costanti.REQ_HANDSHAKE">
|
||||
<q-item-label>
|
||||
<q-btn rounded icon="fas fa-ellipsis-h">
|
||||
<q-menu>
|
||||
<q-list v-if="true" style="min-width: 150px">
|
||||
<q-item clickable v-close-popup @click="setCmd($q, shared_consts.FRIENDSCMD.SETHANDSHAKE, userStore.my.username, '', contact.username)">
|
||||
<q-item-section>{{ $t('friends.accept_handshake') }}</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
<q-list style="min-width: 150px">
|
||||
<q-item clickable icon="fas fa-user-minus" v-close-popup
|
||||
@click="setCmd($q, shared_consts.FRIENDSCMD.REQ_HANDSHAKE, userStore.my.username, false, contact.username, false)">
|
||||
<q-item-section>{{ $t('friends.reject_ask_handshake') }}</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
</q-menu>
|
||||
</q-btn>
|
||||
</q-item-label>
|
||||
</q-item-section>
|
||||
<q-item-section side v-else-if="visu === costanti.REQ_ADD_USER_TO_GROUP">
|
||||
<q-item-label>
|
||||
<q-btn rounded icon="fas fa-ellipsis-h">
|
||||
@@ -253,11 +272,15 @@
|
||||
<q-item-label>
|
||||
<q-btn rounded icon="fas fa-ellipsis-h">
|
||||
<q-menu>
|
||||
<q-list v-if="!userStore.IsMyFriendByUsername(contact.username)" style="min-width: 200px">
|
||||
<q-item clickable icon="fas fa-user-plus" v-close-popup
|
||||
<q-list style="min-width: 200px">
|
||||
<q-item v-if="!userStore.IsMyFriendByUsername(contact.username)" clickable icon="fas fa-user-plus" v-close-popup
|
||||
@click="setCmd($q, shared_consts.FRIENDSCMD.REQFRIEND, userStore.my.username, true, contact.username)">
|
||||
<q-item-section>{{ $t('friends.ask_friend') }}</q-item-section>
|
||||
</q-item>
|
||||
<q-item v-if="!userStore.IsHandShakeByUsername(contact.username)" clickable icon="far fa-handshake" v-close-popup
|
||||
@click="setCmd($q, shared_consts.FRIENDSCMD.REQ_HANDSHAKE, userStore.my.username, true, contact.username)">
|
||||
<q-item-section>{{ $t('handshake.ask_handshake') }}</q-item-section>
|
||||
</q-item>
|
||||
</q-list>
|
||||
<q-list style="min-width: 200px">
|
||||
<q-item clickable icon="fas fa-user-minus" v-close-popup
|
||||
@@ -299,6 +322,30 @@
|
||||
</q-item-section>
|
||||
<q-item-section>{{ $t('friends.remove_from_myfriends') }}</q-item-section>
|
||||
</q-item>
|
||||
|
||||
<q-item v-if="(!userStore.IsHandShakeByUsername(contact.username) && !userStore.IsAskedHandShakeByUsername(contact.username))"
|
||||
clickable v-close-popup @click="setCmd($q, shared_consts.FRIENDSCMD.REQ_HANDSHAKE, userStore.my.username, true, contact.username)">
|
||||
<q-item-section avatar>
|
||||
<q-icon color="positive" name="far fa-handshake"/>
|
||||
</q-item-section>
|
||||
<q-item-section>{{ $t('handshake.ask_handshake') }}</q-item-section>
|
||||
</q-item>
|
||||
<q-item v-else-if="(!userStore.IsHandShakeByUsername(contact.username) && userStore.IsAskedHandShakeByUsername(contact.username))"
|
||||
clickable v-close-popup @click="setCmd($q, shared_consts.FRIENDSCMD.REQ_HANDSHAKE, userStore.my.username, false, contact.username)">
|
||||
<q-item-section avatar>
|
||||
<q-icon color="negative" name="far fa-handshake-alt-slash"/>
|
||||
</q-item-section>
|
||||
<q-item-section>{{ $t('handshake.cancel_ask_handshake') }}</q-item-section>
|
||||
</q-item>
|
||||
<q-item v-else-if="userStore.IsHandShakeByUsername(contact.username)" style="min-width: 200px"
|
||||
clickable v-close-popup
|
||||
@click="setCmd($q, shared_consts.FRIENDSCMD.REMOVE_FROM_MYHANDSHAKE, userStore.my.username, '', contact.username)">
|
||||
<q-item-section avatar>
|
||||
<q-icon color="negative" name="far fa-handshake-alt-slash"/>
|
||||
</q-item-section>
|
||||
<q-item-section>{{ $t('handshake.remove_from_myhandshake') }}</q-item-section>
|
||||
</q-item>
|
||||
|
||||
<q-item clickable v-close-popup @click="tools.reportUser($q, userStore.my.username, contact.username)">
|
||||
<q-item-section avatar>
|
||||
<q-icon color="negative" name="fas fa-flag"/>
|
||||
|
||||
@@ -6,6 +6,7 @@ import {
|
||||
import { INotData } from '../../model/index'
|
||||
import MixinBase from '@src/mixins/mixin-base'
|
||||
import { CTitleBanner } from '@/components/CTitleBanner'
|
||||
import { CTimeAgo } from '@/components/CTimeAgo'
|
||||
import { CCardState } from '../CCardState'
|
||||
import { CMyFieldRec } from '../CMyFieldRec'
|
||||
import { CElemStat } from '../CElemStat'
|
||||
@@ -28,7 +29,7 @@ export default defineComponent({
|
||||
name: 'CStatusReg',
|
||||
props: {},
|
||||
components: { CTitleBanner, CElemStat,
|
||||
CCardState, CCardStat, CLineChart, CMyFieldRec },
|
||||
CCardState, CCardStat, CLineChart, CMyFieldRec, CTimeAgo },
|
||||
setup(props, { attrs, slots, emit }) {
|
||||
const { t } = useI18n()
|
||||
const $q = useQuasar()
|
||||
|
||||
@@ -147,9 +147,17 @@
|
||||
tools.getUserNameOnlyIfToShow(user)
|
||||
}}</q-item-label>
|
||||
</q-item-section>
|
||||
<q-item-section side>{{
|
||||
tools.timeAgo(user.lasttimeonline)
|
||||
}}</q-item-section>
|
||||
<q-item-section side>
|
||||
<div
|
||||
:class="
|
||||
`text-h6 q-mr-sm text-bold ` + $q.dark.isActive
|
||||
? `text-white`
|
||||
: `text-black`
|
||||
"
|
||||
>
|
||||
<CTimeAgo :datetime="user.lasttimeonline" />
|
||||
</div>
|
||||
</q-item-section>
|
||||
</q-item>
|
||||
</transition-group>
|
||||
</q-list>
|
||||
@@ -157,9 +165,13 @@
|
||||
</q-tab-panel>
|
||||
<q-tab-panel name="diffusori">
|
||||
<div class="q-pa-md" style="max-width: 300px">
|
||||
<div class="text-center text-bold text-h6">Aiuta RISO a crescere</div>
|
||||
<div class="text-center"> Condividi il tuo link d'invito, alimentando nuovi ingressi alla RETE Solidale di RISO.
|
||||
</div>
|
||||
<div class="text-center text-bold text-h6">
|
||||
Aiuta RISO a crescere
|
||||
</div>
|
||||
<div class="text-center">
|
||||
Condividi il tuo link d'invito, alimentando nuovi ingressi
|
||||
alla RETE Solidale di RISO.
|
||||
</div>
|
||||
<q-list bordered>
|
||||
<transition-group
|
||||
name="fade"
|
||||
@@ -200,9 +212,12 @@
|
||||
}}</q-item-label>
|
||||
</q-item-section>
|
||||
<q-item-section side
|
||||
><span :class="`text-h6 q-mr-sm text-bold ` + $q.dark.isActive ? `text-white` : `text-black`">{{
|
||||
user.count
|
||||
}}</span></q-item-section
|
||||
><div
|
||||
:class="
|
||||
`text-h6 q-mx-sm q-px-sm text-bold ` + ($q.dark.isActive ? `text-white`: `text-black`)
|
||||
"
|
||||
>{{ user.count }}
|
||||
</div></q-item-section
|
||||
>
|
||||
</q-item>
|
||||
</transition-group>
|
||||
@@ -211,9 +226,12 @@
|
||||
</q-tab-panel>
|
||||
<q-tab-panel name="sharedlink">
|
||||
<div class="q-pa-md" style="max-width: 300px">
|
||||
<div class="text-center text-bold text-h6">Registrati con questi invitanti:</div>
|
||||
<div class="text-center">Cliccare sulla persona per procedere alla registrazione
|
||||
</div>
|
||||
<div class="text-center text-bold text-h6">
|
||||
Registrati con questi invitanti:
|
||||
</div>
|
||||
<div class="text-center">
|
||||
Cliccare sulla persona per procedere alla registrazione
|
||||
</div>
|
||||
<q-list bordered>
|
||||
<transition-group
|
||||
name="fade"
|
||||
@@ -254,8 +272,8 @@
|
||||
}}</q-item-label>
|
||||
</q-item-section>
|
||||
<q-item-section side
|
||||
><span class="text-h6 q-mr-sm"></span></q-item-section
|
||||
>
|
||||
><span class="text-h6 q-mr-sm"></span
|
||||
></q-item-section>
|
||||
</q-item>
|
||||
</transition-group>
|
||||
</q-list>
|
||||
|
||||
0
src/components/CTimeAgo/CTimeAgo.scss
Executable file
0
src/components/CTimeAgo/CTimeAgo.scss
Executable file
41
src/components/CTimeAgo/CTimeAgo.ts
Executable file
41
src/components/CTimeAgo/CTimeAgo.ts
Executable file
@@ -0,0 +1,41 @@
|
||||
import { defineComponent, ref, computed, PropType, toRef, onMounted } from 'vue'
|
||||
import { useUserStore } from '@store/UserStore'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { useGlobalStore } from '@store/globalStore'
|
||||
import { useI18n } from '@/boot/i18n'
|
||||
import { tools } from '@store/Modules/tools'
|
||||
import { toolsext } from '@store/Modules/toolsext'
|
||||
|
||||
import { es, it, enUS } from 'date-fns/locale' // import custom locale
|
||||
|
||||
export default defineComponent({
|
||||
name: 'CTimeAgo',
|
||||
components: {},
|
||||
props: {
|
||||
datetime: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
},
|
||||
|
||||
setup(props, { emit }) {
|
||||
|
||||
const mylocale = ref(<any>null)
|
||||
|
||||
function mounted() {
|
||||
mylocale.value = enUS
|
||||
if (toolsext.getLocale() === 'it')
|
||||
mylocale.value = it
|
||||
else if (toolsext.getLocale() === 'es')
|
||||
mylocale.value = es
|
||||
}
|
||||
|
||||
mounted()
|
||||
|
||||
return {
|
||||
tools,
|
||||
toolsext,
|
||||
mylocale,
|
||||
}
|
||||
}
|
||||
})
|
||||
19
src/components/CTimeAgo/CTimeAgo.vue
Executable file
19
src/components/CTimeAgo/CTimeAgo.vue
Executable file
@@ -0,0 +1,19 @@
|
||||
<template>
|
||||
<timeago
|
||||
:datetime="datetime"
|
||||
auto-update
|
||||
:converter-options="{
|
||||
includeSeconds: true,
|
||||
addSuffix: true,
|
||||
useStrict: false,
|
||||
}"
|
||||
:locale="mylocale"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<script lang="ts" src="./CTimeAgo.ts">
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import './CTimeAgo.scss';
|
||||
</style>
|
||||
1
src/components/CTimeAgo/index.ts
Executable file
1
src/components/CTimeAgo/index.ts
Executable file
@@ -0,0 +1 @@
|
||||
export {default as CTimeAgo} from './CTimeAgo.vue'
|
||||
@@ -16,6 +16,7 @@ import { useUserStore } from '@store/UserStore'
|
||||
|
||||
import { CTitleBanner } from '@/components/CTitleBanner'
|
||||
import { CMyFieldRec } from '@/components/CMyFieldRec'
|
||||
import { CTimeAgo } from '@/components/CTimeAgo'
|
||||
import { CMyFieldDb } from '@/components/CMyFieldDb'
|
||||
import { CMyCircuits } from '@/components/CMyCircuits'
|
||||
import { CFinder } from '@/components/CFinder'
|
||||
@@ -28,7 +29,7 @@ import { useGlobalStore } from '@store/globalStore'
|
||||
|
||||
export default defineComponent({
|
||||
name: 'coinsPopover',
|
||||
components: { CTitleBanner, CMyFieldRec, CMyFieldDb, CMyCircuits, CFinder },
|
||||
components: { CTitleBanner, CMyFieldRec, CTimeAgo, CMyFieldDb, CMyCircuits, CFinder },
|
||||
emits: ['update:modelValue'],
|
||||
props: {
|
||||
modelValue: {
|
||||
|
||||
@@ -151,7 +151,8 @@
|
||||
</q-item-label>
|
||||
|
||||
<q-item-label caption lines="1" :class="(!notif.read) ? 'unread-date' : 'read-date'" @click="clickNotif(notif)">
|
||||
{{ tools.timeAgo(notif.datenotif) }}
|
||||
<CTimeAgo :datetime="notif.datenotif" />
|
||||
|
||||
<!--{{ // getUsernameChatByNotif(notif) }}-->
|
||||
</q-item-label>
|
||||
</q-item-section>
|
||||
|
||||
@@ -16,6 +16,7 @@ import { useGlobalStore } from '@store/globalStore'
|
||||
import { useUserStore } from '@store/UserStore'
|
||||
|
||||
import { CTitleBanner } from '@/components/CTitleBanner'
|
||||
import { CTimeAgo } from '@/components/CTimeAgo'
|
||||
import { CMyFieldRec } from '@/components/CMyFieldRec'
|
||||
import { CMyFieldDb } from '@/components/CMyFieldDb'
|
||||
import { shared_consts } from '@/common/shared_vuejs'
|
||||
@@ -26,7 +27,7 @@ import { waitAndcheckPendingNotif } from '../../../store/Modules/ApiTables'
|
||||
|
||||
export default defineComponent({
|
||||
name: 'notifPopover',
|
||||
components: { CTitleBanner, CMyFieldRec, CMyFieldDb },
|
||||
components: { CTitleBanner, CMyFieldRec, CMyFieldDb, CTimeAgo },
|
||||
emits: ['update:modelValue'],
|
||||
props: {
|
||||
modelValue: {
|
||||
|
||||
@@ -113,6 +113,26 @@
|
||||
/>
|
||||
</div>
|
||||
</q-item-label>
|
||||
<q-item-label caption lines="2" v-if="notif.typedir === shared_consts.TypeNotifs.TYPEDIR_HANDSHAKE && notif.status === 0" v-ripple>
|
||||
<div class="row no-wrap justify-evenly" v-if="userStore.IsReqHandShakeByUsername(notif.sender)">
|
||||
<q-btn
|
||||
dense
|
||||
rounded
|
||||
size="sm"
|
||||
icon="fas fa-user-plus"
|
||||
color="positive" :label="$t('handshake.accept')"
|
||||
@click="tools.addToMyHandShake(q, userStore.my.username, notif.sender)"
|
||||
/>
|
||||
<q-btn
|
||||
dense
|
||||
rounded
|
||||
size="sm"
|
||||
icon="fas fa-user-minus"
|
||||
color="negative" :label="$t('handshake.refuse')"
|
||||
@click="tools.refuseReqHandShake(q, userStore.my.username, notif.sender)"
|
||||
/>
|
||||
</div>
|
||||
</q-item-label>
|
||||
<q-item-label caption lines="2"
|
||||
v-else-if="notif.typedir === shared_consts.TypeNotifs.TYPEDIR_GROUPS && notif.status === 0 && notif.typeid === shared_consts.TypeNotifs.ID_GROUP_REQUEST_TO_ENTER"
|
||||
v-ripple>
|
||||
@@ -137,7 +157,7 @@
|
||||
</q-item-label>
|
||||
|
||||
<q-item-label caption lines="1" :class="(!notif.read) ? 'unread-date' : 'read-date'" @click="clickNotif(notif)">
|
||||
{{ tools.timeAgo(notif.datenotif) }}
|
||||
<CTimeAgo :datetime="notif.datenotif" />
|
||||
<!--{{ // getUsernameChatByNotif(notif) }}-->
|
||||
</q-item-label>
|
||||
</q-item-section>
|
||||
|
||||
@@ -174,6 +174,19 @@ export default function () {
|
||||
descr += '( ' + $t('movement.causal') + ': ' + notif.extrarec.causal + ')'
|
||||
}
|
||||
}
|
||||
} else if (notif.typedir === shared_consts.TypeNotifs.TYPEDIR_HANDSHAKE) {
|
||||
if (notif.status === shared_consts.StatusNotifs.STATUS_HANDSHAKE_ACCEPTED) {
|
||||
descr += '<br><em>' + $t('handshake.accepted') + '</em>'
|
||||
} else if (notif.status === shared_consts.StatusNotifs.STATUS_HANDSHAKE_REFUSED) {
|
||||
descr += '<br><em>' + $t('handshake.refused') + '</em>'
|
||||
}
|
||||
} else if (notif.typedir === shared_consts.TypeNotifs.TYPEDIR_CIRCUITS) {
|
||||
if (notif.typeid === shared_consts.TypeNotifs.ID_CIRCUIT_SENDCOINSREQ) {
|
||||
// console.log('notif.extrarec', notif.extrarec)
|
||||
if (notif.extrarec && notif.extrarec.hasOwnProperty('causal') && notif.extrarec.causal) {
|
||||
descr += '( ' + $t('movement.causal') + ': ' + notif.extrarec.causal + ')'
|
||||
}
|
||||
}
|
||||
} else if (notif.typedir === shared_consts.TypeNotifs.TYPEDIR_GROUPS) {
|
||||
if (notif.status === shared_consts.GroupsNotifs.STATUS_GROUPS_ACCEPTED) {
|
||||
descr += '<br><em>' + $t('groups.accepted') + '</em>'
|
||||
|
||||
@@ -248,6 +248,8 @@ export interface IConfPages {
|
||||
showViewProfile: boolean
|
||||
enablePwa: boolean
|
||||
lang: number
|
||||
videoPromo: string
|
||||
PDFPromo: string
|
||||
}
|
||||
export interface IContacts {
|
||||
facebook: string
|
||||
|
||||
@@ -96,6 +96,8 @@ export interface IUserProfile {
|
||||
myshares: IShareWithUs[]
|
||||
friends: IFriends[]
|
||||
req_friends: IFriends[]
|
||||
handshake: IFriends[]
|
||||
req_handshake: IFriends[]
|
||||
mygroups: IMyGroup[]
|
||||
mycircuits: IMyCircuit[]
|
||||
manage_mygroups: IMyGroup[]
|
||||
@@ -108,6 +110,7 @@ export interface IUserProfile {
|
||||
|
||||
// in memory
|
||||
asked_friends: any[]
|
||||
asked_handshake: any[]
|
||||
asked_groups: IGroupShort[]
|
||||
refused_groups: IGroupShort[]
|
||||
list_usersgroup?: IFriends[]
|
||||
|
||||
@@ -664,6 +664,16 @@
|
||||
:type="costanti.FieldType.boolean"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
<CMyFieldDb
|
||||
table="sites"
|
||||
:title="$t('confpages.PDFPromo')"
|
||||
:id="mysite._id"
|
||||
:rec="mysite"
|
||||
mykey="confpages"
|
||||
mysubkey="PDFPromo"
|
||||
:type="costanti.FieldType.string"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
</div>
|
||||
<CMyFieldDb
|
||||
table="sites"
|
||||
@@ -675,6 +685,16 @@
|
||||
:type="costanti.FieldType.boolean"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
<CMyFieldDb
|
||||
table="sites"
|
||||
:title="$t('confpages.videoPromo')"
|
||||
:id="mysite._id"
|
||||
:rec="mysite"
|
||||
mykey="confpages"
|
||||
mysubkey="videoPromo"
|
||||
:type="costanti.FieldType.string"
|
||||
>
|
||||
</CMyFieldDb>
|
||||
</q-tab-panel>
|
||||
</q-tab-panels>
|
||||
|
||||
|
||||
@@ -209,11 +209,14 @@ const msg_it = {
|
||||
duplicatedrecord: 'Vuoi Duplicare il record',
|
||||
recdupfailed: 'Errore durante la duplicazione del Record',
|
||||
friendsadded: 'Aggiunto alla lista di Amici',
|
||||
handshakesadded: 'Aggiunto alla lista Strette di Mano',
|
||||
domanda_removefriend: 'Rimuovi dagli Amici {username}?',
|
||||
domanda_removehandshake: 'Rimuovi dalla lista Strette di Mano {username}?',
|
||||
domanda_exit_fromgroup: 'Uscire dal Gruppo {groupname} ?',
|
||||
domanda_addadminofmygroup: 'Aggiungere {username} come Amministratore del Gruppo {groupname} ?',
|
||||
domanda_removeadminofmygroup: 'Rimuovere {username} dall\' incarico di Amministratore del Gruppo {groupname} ?',
|
||||
removedfriend: 'Rimosso dalla lista di Amici',
|
||||
removedhandshake: 'Rimosso dalla lista Strette di Mano',
|
||||
addedtoadmin: 'Aggiunto {username} come amministratore',
|
||||
removedtoadmin: 'Rimosso {username} come amministratore',
|
||||
refusedgroup: 'Rifiutato a {username} la richiesta di entrare nel Gruppo',
|
||||
@@ -223,23 +226,32 @@ const msg_it = {
|
||||
insertgoodorservices_to_enter_circuit: 'Per poter entrare nel Circuito è necessario aggiungere almeno un Bene, Servizio o offrire Ospitalità',
|
||||
deletedgroup: 'Gruppo Eliminato',
|
||||
domanda_addtofriend: 'Aggiungere agli amici {username}?',
|
||||
domanda_addtohandshake: 'Hai stretto la mano a {username}?',
|
||||
addtohandshake: 'Hai stretto la mano a {username}',
|
||||
domanda_addtogroup: 'Aggiungi {username} al gruppo {groupname}?',
|
||||
domanda_addtocircuit: 'Aggiungi {username} al Circuito {circuitname}?',
|
||||
addedfriend: 'Aggiunto alla lista di Amici',
|
||||
addedhandshake: 'Aggiunto alla lista Strette di Mano',
|
||||
addedgroup: 'Aggiunto al Gruppo',
|
||||
addedcircuit: 'Aggiunto al Circuito {circuitname}',
|
||||
domanda_trusted: 'Accettare la Fiducia a {username}?',
|
||||
trusted: 'Accettato la Fiducia',
|
||||
domanda_ask_friend: 'Chiedere l\'Amicizia a {username}?',
|
||||
domanda_ask_handshake: 'Chiedere di confermare la vostra Stretta di mano a {username}?',
|
||||
domanda_ask_group: 'Chiedere l\'invito al Gruppo {groupname}?',
|
||||
askedtofriend: 'Chiesto l\'Amicizia a {username}',
|
||||
askedtohandshake: 'Chiesto la Stretta di mano a {username}',
|
||||
domanda_revoke_friend: 'Revocare la richiesta di Amicizia a {username}?',
|
||||
domanda_revoke_handshake: 'Revocare la richiesta di Stretta di mano a {username}?',
|
||||
domanda_revoke_group: 'Revocare la richiesta al gruppo {groupname}?',
|
||||
domanda_refuse_group: 'Rifiutare la richiesta di {username} per entrare nel gruppo {groupname}?',
|
||||
revoketofriend: 'Revocato la richiesta di Amicizia a {username}',
|
||||
revoketohandshake: 'Revocato la richiesta di Stretta di mano a {username}',
|
||||
domanda_cancel_req_friend: 'Annullare la richiesta di Amicizia a {username}?',
|
||||
domanda_cancel_req_handshake: 'Annullare la richiesta di Stretta di mano a {username}?',
|
||||
domanda_cancel_req_group: 'Annullare la richiesta d\'invito di {username} al gruppo {groupname}?',
|
||||
cancel_req_friend: 'Annullata la richiesta di Amicizia a {username}',
|
||||
cancel_req_handshake: 'Annullata la richiesta di Stretta di mano a {username}',
|
||||
cancel_req_group: 'Annullata la richiesta al gruppo {groupname}',
|
||||
domanda_rejectedtrust: 'Rifiutare la Fiducia a {username}?',
|
||||
rejected: 'Rifiutato la Fiducia',
|
||||
@@ -1067,10 +1079,25 @@ const msg_it = {
|
||||
block_user: 'Blocca Utente',
|
||||
ask_friend: 'Chiedi l\'Amicizia',
|
||||
cancel_ask_friend: 'Annulla la richiesta di Amicizia',
|
||||
cancel_ask_friend_short: 'Annulla richiesta',
|
||||
cancel_ask_friend_short: 'Annulla rich. Amicizia',
|
||||
reject_ask_friend: 'Rifiuta l\'Amicizia',
|
||||
report_user: 'Segnala Utente',
|
||||
},
|
||||
handshake: {
|
||||
strettedimano: 'Strette di mano',
|
||||
received: 'Ricevute',
|
||||
accept_trust: 'Accetta la Stretta di mano',
|
||||
accepted: 'Stretta di mano Accettata',
|
||||
refused: 'Stretta di mano Rifiutata',
|
||||
accept: 'Accetta',
|
||||
refuse: 'Rifiuta',
|
||||
accept_handshake: 'Accetta la Stretta di mano',
|
||||
remove_from_myhandshake: 'Rimuovi dalle Strette di mano',
|
||||
ask_handshake: 'Chiedi',
|
||||
cancel_ask_handshake: 'Annulla la richiesta di Stretta di mano',
|
||||
cancel_ask_handshake_short: 'Annulla',
|
||||
reject_ask_handshake: 'Rifiuta la Stretta di mano',
|
||||
},
|
||||
shared: {
|
||||
info1: 'Info',
|
||||
subscribes: 'Membri',
|
||||
@@ -1351,9 +1378,11 @@ const msg_it = {
|
||||
showViewGroups: 'Bott. Gruppi',
|
||||
showViewUsers: 'Bott. Users',
|
||||
showViewCircuits: 'Bott. Circuiti',
|
||||
videoPromo: 'Video Presentazione',
|
||||
showViewBooking: 'Bott. Prenotaz.',
|
||||
showViewProfile: 'Bott. Profile',
|
||||
enablePwa: 'PWA',
|
||||
PDFPromo: 'PDF Presentazione',
|
||||
|
||||
},
|
||||
|
||||
|
||||
@@ -243,6 +243,10 @@ export const costanti = {
|
||||
FIND_GROUP: 20,
|
||||
MY_GROUPS: 21,
|
||||
USER_GROUPS: 22,
|
||||
HANDSHAKE: 23,
|
||||
REQ_HANDSHAKE: 24,
|
||||
ASK_SENT_HANDSHAKE: 25,
|
||||
|
||||
CREATE_GROUP: 30,
|
||||
MANAGE_GROUPS: 31,
|
||||
ADMIN_GROUPS: 40,
|
||||
|
||||
@@ -3030,23 +3030,28 @@ export const tools = {
|
||||
},
|
||||
|
||||
getstrShortDate(mydate: Date | number | string | undefined) {
|
||||
const DateFormatter = new Intl.DateTimeFormat(toolsext.getLocale() || void 0, {
|
||||
weekday: 'long',
|
||||
day: 'numeric',
|
||||
month: 'short',
|
||||
year: 'numeric',
|
||||
// timeZone: 'UTC'
|
||||
})
|
||||
try {
|
||||
if (DateFormatter) {
|
||||
// @ts-ignore
|
||||
const date1 = new Date(mydate)
|
||||
return DateFormatter.format(date1)
|
||||
const DateFormatter = new Intl.DateTimeFormat(toolsext.getLocale() || void 0, {
|
||||
weekday: 'long',
|
||||
day: 'numeric',
|
||||
month: 'short',
|
||||
year: 'numeric',
|
||||
// timeZone: 'UTC'
|
||||
})
|
||||
try {
|
||||
if (DateFormatter) {
|
||||
// @ts-ignore
|
||||
const date1 = new Date(mydate)
|
||||
return DateFormatter.format(date1)
|
||||
}
|
||||
return mydate
|
||||
} catch (e) {
|
||||
return ''
|
||||
}
|
||||
return mydate
|
||||
} catch (e) {
|
||||
return ''
|
||||
}
|
||||
|
||||
},
|
||||
getstrVeryShortDate(mydate: Date | number | string | undefined) {
|
||||
const DateFormatter = new Intl.DateTimeFormat(toolsext.getLocale() || void 0, {
|
||||
@@ -5455,6 +5460,48 @@ export const tools = {
|
||||
})
|
||||
},
|
||||
|
||||
addToMyHandShake($q: any, username: string, usernameDest: string) {
|
||||
|
||||
const userStore = useUserStore()
|
||||
const notifStore = useNotifStore()
|
||||
$q.dialog({
|
||||
message: t('db.domanda_addtohandshake', { username: usernameDest }),
|
||||
ok: { label: t('dialog.yes'), push: true },
|
||||
cancel: { label: t('dialog.cancel') },
|
||||
title: t('db.domanda')
|
||||
}).onOk(() => {
|
||||
|
||||
userStore.setFriendsCmd($q, t, username, usernameDest, shared_consts.FRIENDSCMD.SETHANDSHAKE, null)
|
||||
.then((res: any) => {
|
||||
if (res) {
|
||||
notifStore.updateNotification = true
|
||||
userStore.my.profile.handshake = [...userStore.my.profile.handshake, res]
|
||||
userStore.my.profile.req_handshake = userStore.my.profile.req_handshake.filter((rec: IFriends) => rec.username !== usernameDest)
|
||||
tools.showPositiveNotif($q, t('db.addedhandshake'))
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
removeFromMyHandShake($q: any, username: string, usernameDest: string) {
|
||||
const userStore = useUserStore()
|
||||
|
||||
$q.dialog({
|
||||
message: t('db.domanda_removehandshake', { username: usernameDest }),
|
||||
ok: { label: t('dialog.yes'), push: true },
|
||||
cancel: { label: t('dialog.cancel') },
|
||||
title: t('db.domanda')
|
||||
}).onOk(() => {
|
||||
|
||||
userStore.setFriendsCmd($q, t, username, usernameDest, shared_consts.FRIENDSCMD.REMOVE_FROM_MYHANDSHAKE, null).then((res) => {
|
||||
if (res) {
|
||||
userStore.my.profile.handshake = userStore.my.profile.handshake.filter((rec: IFriends) => rec.username !== usernameDest)
|
||||
tools.showPositiveNotif($q, t('db.removedhandshake'))
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
blockUser($q: any, username: string, usernameDest: string) {
|
||||
const userStore = useUserStore()
|
||||
$q.dialog({
|
||||
@@ -5525,6 +5572,27 @@ export const tools = {
|
||||
})
|
||||
},
|
||||
|
||||
refuseReqHandShake($q: any, username: string, usernameDest: string) {
|
||||
|
||||
const userStore = useUserStore()
|
||||
const notifStore = useNotifStore()
|
||||
$q.dialog({
|
||||
message: t('db.domanda_revoke_handshake', { username: usernameDest }),
|
||||
ok: { label: t('dialog.yes'), push: true },
|
||||
cancel: { label: t('dialog.cancel') },
|
||||
title: t('db.domanda')
|
||||
}).onOk(() => {
|
||||
|
||||
userStore.setFriendsCmd($q, t, username, usernameDest, shared_consts.FRIENDSCMD.REMOVE_FROM_MYHANDSHAKE, null).then((res) => {
|
||||
if (res) {
|
||||
notifStore.updateNotification = true
|
||||
userStore.my.profile.req_handshake = userStore.my.profile.req_handshake.filter((user: IFriends) => user.username !== usernameDest)
|
||||
tools.showPositiveNotif($q, t('db.removedhandshake'))
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
updateMyData(res: any) {
|
||||
const userStore = useUserStore()
|
||||
const circuitStore = useCircuitStore()
|
||||
@@ -5805,6 +5873,49 @@ export const tools = {
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
setRequestHandShake($q: any, username: string, usernameDest: string, value: boolean) {
|
||||
|
||||
const userStore = useUserStore()
|
||||
|
||||
let msg = ''
|
||||
if (value) {
|
||||
msg = t('db.domanda_ask_handshake', { username: usernameDest })
|
||||
} else {
|
||||
msg = t('db.domanda_revoke_handshake', { username: usernameDest })
|
||||
}
|
||||
|
||||
$q.dialog({
|
||||
message: msg,
|
||||
ok: {
|
||||
label: t('dialog.yes'),
|
||||
push: true
|
||||
},
|
||||
cancel: {
|
||||
label: t('dialog.cancel')
|
||||
},
|
||||
title: t('db.domanda')
|
||||
}).onOk(() => {
|
||||
|
||||
userStore.setFriendsCmd($q, t, username, usernameDest, shared_consts.FRIENDSCMD.REQHANDSHAKE, value)
|
||||
.then((res: any) => {
|
||||
if (res) {
|
||||
if (value) {
|
||||
// ADD to req HandShake
|
||||
userStore.my.profile.asked_handshake.push(res)
|
||||
tools.showPositiveNotif($q, t('db.askedtohandshake', { username: usernameDest }))
|
||||
} else {
|
||||
// REMOVE to req HandShake
|
||||
userStore.my.profile.asked_handshake = userStore.my.profile.asked_handshake.filter((rec: IUserFields) => rec.username !== usernameDest)
|
||||
tools.showPositiveNotif($q, t('db.revoketohandshake', { username: usernameDest }))
|
||||
}
|
||||
|
||||
} else {
|
||||
tools.showNegativeNotif($q, t('db.recfailed'))
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
setRequestGroup($q: any, username: string, groupnameDest: string, value: boolean) {
|
||||
|
||||
const userStore = useUserStore()
|
||||
@@ -5864,6 +5975,23 @@ export const tools = {
|
||||
})
|
||||
})
|
||||
},
|
||||
cancelReqHandShake($q: any, username: string, usernameDest: string) {
|
||||
const userStore = useUserStore()
|
||||
$q.dialog({
|
||||
message: t('db.domanda_cancel_req_handshake', { username: usernameDest }),
|
||||
ok: { label: t('dialog.yes'), push: true },
|
||||
cancel: { label: t('dialog.cancel') },
|
||||
title: t('db.domanda')
|
||||
}).onOk(() => {
|
||||
|
||||
userStore.setFriendsCmd($q, t, username, usernameDest, shared_consts.FRIENDSCMD.CANCEL_REQ_HANDSHAKE, null).then((res) => {
|
||||
if (res) {
|
||||
userStore.my.profile.asked_handshake = userStore.my.profile.asked_handshake.filter((rec: IUserFields) => rec.username !== usernameDest)
|
||||
tools.showPositiveNotif($q, t('db.cancel_req_handshake'))
|
||||
}
|
||||
})
|
||||
})
|
||||
},
|
||||
cancelReqGroups($q: any, username: string, groupnameDest: string) {
|
||||
const userStore = useUserStore()
|
||||
$q.dialog({
|
||||
@@ -6479,10 +6607,18 @@ export const tools = {
|
||||
tools.addToMyFriends($q, username, dest)
|
||||
} else if (cmd === shared_consts.FRIENDSCMD.REQFRIEND) {
|
||||
tools.setRequestFriendship($q, username, dest, value)
|
||||
} else if (cmd === shared_consts.FRIENDSCMD.SETHANDSHAKE) {
|
||||
tools.addToMyHandShake($q, username, dest)
|
||||
} else if (cmd === shared_consts.FRIENDSCMD.REQHANDSHAKE) {
|
||||
tools.setRequestHandShake($q, username, dest, value)
|
||||
} else if (cmd === shared_consts.FRIENDSCMD.REFUSE_REQ_FRIEND) {
|
||||
tools.refuseReqFriends($q, username, dest)
|
||||
} else if (cmd === shared_consts.FRIENDSCMD.REFUSE_REQ_HANDSHAKE) {
|
||||
tools.refuseReqHandShake($q, username, dest)
|
||||
} else if (cmd === shared_consts.FRIENDSCMD.CANCEL_REQ_FRIEND) {
|
||||
tools.cancelReqFriends($q, username, dest)
|
||||
} else if (cmd === shared_consts.FRIENDSCMD.CANCEL_REQ_HANDSHAKE) {
|
||||
tools.cancelReqHandShake($q, username, dest)
|
||||
} else if (cmd === shared_consts.CIRCUITCMD.SET) {
|
||||
tools.addToMyCircuits($q, username, dest)
|
||||
} else if (cmd === shared_consts.CIRCUITCMD.REQ) {
|
||||
@@ -7079,30 +7215,6 @@ export const tools = {
|
||||
}
|
||||
},
|
||||
|
||||
timeAgo(input: any) {
|
||||
const date = (input instanceof Date) ? input : new Date(input)
|
||||
const formatter = new Intl.RelativeTimeFormat(toolsext.getLocale() || 'it')
|
||||
const ranges: any = {
|
||||
years: 3600 * 24 * 365,
|
||||
months: 3600 * 24 * 30,
|
||||
weeks: 3600 * 24 * 7,
|
||||
days: 3600 * 24,
|
||||
hours: 3600,
|
||||
minutes: 60,
|
||||
seconds: 1
|
||||
}
|
||||
const secondsElapsed = (date.getTime() - Date.now()) / 1000
|
||||
let key: any
|
||||
for (key in ranges) {
|
||||
if (ranges[key] < Math.abs(secondsElapsed)) {
|
||||
// @ts-ignore
|
||||
const delta = secondsElapsed / ranges[key]
|
||||
// @ts-ignore
|
||||
return formatter.format(Math.round(delta), key)
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
getEnv(name: string) {
|
||||
const config: any = {
|
||||
// @ts-ignore
|
||||
|
||||
@@ -65,6 +65,9 @@ export const DefaultUser: IUserFields = {
|
||||
myshares: [],
|
||||
friends: [],
|
||||
req_friends: [],
|
||||
handshake: [],
|
||||
req_handshake: [],
|
||||
asked_handshake: [],
|
||||
mygroups: [],
|
||||
mycircuits: [],
|
||||
manage_mygroups: [],
|
||||
@@ -123,6 +126,9 @@ export const DefaultProfile: IUserProfile = {
|
||||
myshares: [],
|
||||
friends: [],
|
||||
req_friends: [],
|
||||
handshake: [],
|
||||
req_handshake: [],
|
||||
asked_handshake: [],
|
||||
mygroups: [],
|
||||
mycircuits: [],
|
||||
manage_mygroups: [],
|
||||
@@ -220,6 +226,12 @@ export const useUserStore = defineStore('UserStore', {
|
||||
else
|
||||
return false
|
||||
},
|
||||
IsHandShakeByUsername(username: string): boolean {
|
||||
if (this.my.profile.handshake)
|
||||
return this.my.profile.handshake.findIndex((rec) => rec.username === username) >= 0
|
||||
else
|
||||
return false
|
||||
},
|
||||
|
||||
IsMyGroupByGroupname(groupname: string): boolean {
|
||||
if (this.my.profile.mygroups)
|
||||
@@ -251,6 +263,13 @@ export const useUserStore = defineStore('UserStore', {
|
||||
return false
|
||||
},
|
||||
|
||||
IsAskedHandShakeByUsername(username: string): boolean {
|
||||
if (this.my.profile.asked_handshake)
|
||||
return this.my.profile.asked_handshake.findIndex((rec) => rec.username === username) >= 0
|
||||
else
|
||||
return false
|
||||
},
|
||||
|
||||
IsReqFriendByUsername(username: string): boolean {
|
||||
if (this.my.profile.req_friends)
|
||||
return this.my.profile.req_friends.findIndex((rec) => rec.username === username) >= 0
|
||||
@@ -258,6 +277,13 @@ export const useUserStore = defineStore('UserStore', {
|
||||
return false
|
||||
},
|
||||
|
||||
IsReqHandShakeByUsername(username: string): boolean {
|
||||
if (this.my.profile.req_handshake)
|
||||
return this.my.profile.req_handshake.findIndex((rec) => rec.username === username) >= 0
|
||||
else
|
||||
return false
|
||||
},
|
||||
|
||||
IsAskedGroupByGroupname(groupname: string): boolean {
|
||||
if (this.my.profile.asked_groups)
|
||||
return this.my.profile.asked_groups.findIndex((rec: IGroupShort) => rec.groupname === groupname) >= 0
|
||||
@@ -733,6 +759,7 @@ export const useUserStore = defineStore('UserStore', {
|
||||
// Memory
|
||||
this.my.profile.manage_mygroups = []
|
||||
this.my.profile.asked_friends = []
|
||||
this.my.profile.asked_handshake = []
|
||||
this.my.profile.asked_groups = []
|
||||
this.my.profile.refused_groups = []
|
||||
}
|
||||
@@ -1151,7 +1178,10 @@ export const useUserStore = defineStore('UserStore', {
|
||||
.then((ris) => {
|
||||
this.my.profile.friends = ris.data.friends.listFriends ? ris.data.friends.listFriends : []
|
||||
this.my.profile.req_friends = ris.data.friends.listRequestFriends ? ris.data.friends.listRequestFriends : []
|
||||
this.my.profile.handshake = ris.data.friends.listHandShake ? ris.data.friends.listHandShake : []
|
||||
this.my.profile.req_handshake = ris.data.friends.listRequestHandShake ? ris.data.friends.listRequestHandShake : []
|
||||
this.my.profile.asked_friends = ris.data.friends.listSentRequestFriends ? ris.data.friends.listSentRequestFriends : []
|
||||
this.my.profile.asked_handshake = ris.data.friends.listSentRequestHandShake ? ris.data.friends.listSentRequestHandShake : []
|
||||
|
||||
return ris.data.user
|
||||
}).catch((error) => {
|
||||
@@ -1255,7 +1285,10 @@ export const useUserStore = defineStore('UserStore', {
|
||||
.then((ris) => {
|
||||
this.my.profile.friends = ris.data.listFriends ? ris.data.listFriends : []
|
||||
this.my.profile.req_friends = ris.data.listRequestFriends ? ris.data.listRequestFriends : []
|
||||
this.my.profile.handshake = ris.data.friends.listHandShake ? ris.data.friends.listHandShake : []
|
||||
this.my.profile.req_handshake = ris.data.friends.listRequestHandShake ? ris.data.friends.listRequestHandShake : []
|
||||
this.my.profile.asked_friends = ris.data.listSentRequestFriends ? ris.data.listSentRequestFriends : []
|
||||
this.my.profile.asked_handshake = ris.data.friends.listSentRequestHandShake ? ris.data.friends.listSentRequestHandShake : []
|
||||
return ris.data
|
||||
}).catch((error) => {
|
||||
return {}
|
||||
|
||||
@@ -174,6 +174,8 @@ export const useGlobalStore = defineStore('GlobalStore', {
|
||||
showViewProfile: false,
|
||||
enablePwa: false,
|
||||
lang: costanti.Lang.IT,
|
||||
videoPromo: '',
|
||||
PDFPromo: '',
|
||||
},
|
||||
},
|
||||
provinces: [],
|
||||
|
||||
@@ -10,6 +10,7 @@ import { CMyGroup } from '@/components/CMyGroup'
|
||||
import { CMyCircuit } from '@/components/CMyCircuit'
|
||||
import { CNotifAtTop } from '@src/components/CNotifAtTop'
|
||||
import { CSendCoins } from '@/components/CSendCoins'
|
||||
import { CTimeAgo } from '@/components/CTimeAgo'
|
||||
import { CMyUser } from '@/components/CMyUser'
|
||||
import { CUserNonVerif } from '@/components/CUserNonVerif'
|
||||
import { CCheckIfIsLogged } from '@/components/CCheckIfIsLogged'
|
||||
@@ -35,7 +36,7 @@ export default defineComponent({
|
||||
components: {
|
||||
CProfile, CTitleBanner, CMyFieldDb, CSkill, CDateTime, CCopyBtn, CUserNonVerif, CMyFieldRec, CMyUser,
|
||||
CMyGroup, CLabel, CMyCircuit, CSendCoins, CNotifAtTop,
|
||||
CCheckIfIsLogged
|
||||
CCheckIfIsLogged, CTimeAgo
|
||||
},
|
||||
props: {},
|
||||
setup() {
|
||||
@@ -50,6 +51,8 @@ export default defineComponent({
|
||||
const { getRefLink } = MixinUsers()
|
||||
|
||||
const animation = ref('fade')
|
||||
const quantiHandShake = ref('')
|
||||
const usersList = ref({show: false, title: '', list: []})
|
||||
|
||||
const username = computed(() => $route.params.username ? $route.params.username.toString() : userStore.my.username)
|
||||
const idnotif = computed(() => $route.query.idnotif ? $route.query.idnotif.toString() : '')
|
||||
@@ -59,6 +62,7 @@ export default defineComponent({
|
||||
const showPic = ref(false)
|
||||
const caricato = ref(false)
|
||||
const showsendCoinTo = ref(false)
|
||||
const showinghand = ref(false)
|
||||
|
||||
const myuser = ref(<IUserFields | null>null)
|
||||
|
||||
@@ -94,6 +98,8 @@ export default defineComponent({
|
||||
filtroutente.value = [{ userId: myuser.value._id }]
|
||||
notifStore.setAsRead(idnotif.value)
|
||||
|
||||
quantiHandShake.value = (myuser.value.profile.handshake ? myuser.value.profile.handshake.length : 0) + ' ' + t('handshake.received')
|
||||
|
||||
try {
|
||||
listgroupsfiltered.value = globalStore.mygroups.filter((grp: IMyGroup) => myuser.value!.profile.mygroups.findIndex((rec: IMyGroup) => rec.groupname === grp.groupname) >= 0)
|
||||
} catch (e) {
|
||||
@@ -175,6 +181,7 @@ export default defineComponent({
|
||||
username,
|
||||
profile,
|
||||
tools,
|
||||
toolsext,
|
||||
costanti,
|
||||
myuser,
|
||||
shared_consts,
|
||||
@@ -201,6 +208,9 @@ export default defineComponent({
|
||||
site,
|
||||
listcircuitsfiltered,
|
||||
isDebugOn,
|
||||
showinghand,
|
||||
quantiHandShake,
|
||||
usersList,
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
@@ -51,11 +51,19 @@
|
||||
color="green"
|
||||
>online</q-badge
|
||||
>
|
||||
<q-badge
|
||||
v-if="userStore.IsHandShakeByUsername(myuser.username)"
|
||||
align="bottom"
|
||||
floating
|
||||
color="red"
|
||||
><q-icon name="fas fa-handshake"></q-icon
|
||||
></q-badge>
|
||||
</q-avatar>
|
||||
</div>
|
||||
|
||||
<div class="last_access">
|
||||
OnLine: {{ tools.timeAgo(myuser.lasttimeonline) }}
|
||||
OnLine:
|
||||
<CTimeAgo :datetime="myuser.lasttimeonline" />
|
||||
</div>
|
||||
|
||||
<div v-if="myuser.reported">
|
||||
@@ -147,7 +155,7 @@
|
||||
</div>
|
||||
|
||||
<div class="last_access">
|
||||
OnLine: {{ tools.timeAgo(myuser.lasttimeonline) }}
|
||||
OnLine: <CTimeAgo :datetime="myuser.lasttimeonline" />
|
||||
</div>
|
||||
|
||||
<div v-if="myuser.reported">
|
||||
@@ -210,6 +218,100 @@
|
||||
<div v-if="myuser._id" class="col-12 text-h8 q-mt-sm">
|
||||
{{ myuser.profile.biografia }}
|
||||
</div>
|
||||
<q-banner
|
||||
rounded
|
||||
dense
|
||||
size="lg"
|
||||
class="bg-grey-1 shadow-5 q-my-sm"
|
||||
color="primary q-title"
|
||||
style="text-align: center"
|
||||
>
|
||||
<div class="mybanner bg-blue text-white">{{ $t('handshake.strettedimano')}}:</div>
|
||||
<div v-if="userStore.IsHandShakeByUsername(myuser.username)">
|
||||
{{ $t('db.addtohandshake', { username: myuser.username }) }}
|
||||
</div>
|
||||
|
||||
<q-btn
|
||||
:label="quantiHandShake"
|
||||
class="q-my-sm"
|
||||
rounded
|
||||
icon="fas fa-handshake"
|
||||
@click="
|
||||
usersList.show = true;
|
||||
usersList.title = 'Lista Strette di mano';
|
||||
usersList.list = myuser.profile.handshake;
|
||||
"
|
||||
>
|
||||
</q-btn>
|
||||
|
||||
<!--HANDSHAKE-->
|
||||
<div v-if="!isMyRecord(myuser.username)">
|
||||
<div
|
||||
class="row centeritems q-ma-sm q-pa-sm"
|
||||
v-if="userStore.IsReqHandShakeByUsername(myuser.username)"
|
||||
>
|
||||
<q-btn
|
||||
icon="fas fa-handshake"
|
||||
color="positive"
|
||||
:label="$t('handshake.accept_handshake')"
|
||||
@click="
|
||||
tools.addToMyHandShake(
|
||||
$q,
|
||||
userStore.my.username,
|
||||
myuser.username
|
||||
)
|
||||
"
|
||||
/>
|
||||
<q-btn
|
||||
icon="fas fa-handshake-alt-slash"
|
||||
color="negative"
|
||||
:label="$t('handshake.reject_ask_handshake')"
|
||||
@click="
|
||||
tools.refuseReqHandShake(
|
||||
$q,
|
||||
userStore.my.username,
|
||||
myuser.username
|
||||
)
|
||||
"
|
||||
/>
|
||||
</div>
|
||||
<div v-else>
|
||||
<q-btn
|
||||
v-if="
|
||||
!userStore.IsHandShakeByUsername(myuser.username) &&
|
||||
!userStore.IsAskedHandShakeByUsername(myuser.username)
|
||||
"
|
||||
icon="fas fa-handshake"
|
||||
color="primary"
|
||||
:label="$t('handshake.ask_handshake')"
|
||||
@click="
|
||||
tools.setRequestHandShake(
|
||||
$q,
|
||||
userStore.my.username,
|
||||
myuser.username,
|
||||
true
|
||||
)
|
||||
"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<q-btn
|
||||
v-if="
|
||||
userStore.IsAskedHandShakeByUsername(myuser.username) &&
|
||||
!userStore.IsHandShakeByUsername(myuser.username)
|
||||
"
|
||||
icon="fas fa-handshake-alt-slash"
|
||||
:label="$t('handshake.cancel_ask_handshake_short')"
|
||||
@click="
|
||||
tools.cancelReqHandShake(
|
||||
$q,
|
||||
userStore.my.username,
|
||||
myuser.username
|
||||
)
|
||||
"
|
||||
/>
|
||||
</div>
|
||||
</q-banner>
|
||||
|
||||
<div v-if="!isMyRecord(myuser.username)">
|
||||
<div
|
||||
@@ -539,6 +641,27 @@
|
||||
<div v-else>
|
||||
<CUserNonVerif></CUserNonVerif>
|
||||
</div>
|
||||
<q-dialog v-model="usersList.show">
|
||||
<q-card class="dialog_card">
|
||||
<q-toolbar class="bg-primary text-white">
|
||||
<q-toolbar-title>
|
||||
{{ usersList.title }}
|
||||
</q-toolbar-title>
|
||||
<q-btn flat round color="white" icon="close" v-close-popup></q-btn>
|
||||
</q-toolbar>
|
||||
|
||||
<q-card-section class="inset-shadow">
|
||||
<div v-for="(rec, i) in usersList.list" :key="i">
|
||||
<CMyUser
|
||||
:mycontact="rec"
|
||||
:visu="costanti.FIND_PEOPLE"
|
||||
@setCmd="tools.setCmd"
|
||||
>
|
||||
</CMyUser>
|
||||
</div>
|
||||
</q-card-section>
|
||||
</q-card>
|
||||
</q-dialog>
|
||||
</template>
|
||||
|
||||
<script lang="ts" src="./myprofile.ts">
|
||||
|
||||
@@ -4479,7 +4479,7 @@ dashdash@^1.12.0:
|
||||
dependencies:
|
||||
assert-plus "^1.0.0"
|
||||
|
||||
date-fns@^2.29.3:
|
||||
date-fns@^2.28.0, date-fns@^2.29.3:
|
||||
version "2.29.3"
|
||||
resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.29.3.tgz#27402d2fc67eb442b511b70bbdf98e6411cd68a8"
|
||||
integrity sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==
|
||||
@@ -12754,6 +12754,13 @@ vue-template-es2015-compiler@^1.2.2:
|
||||
resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825"
|
||||
integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==
|
||||
|
||||
vue-timeago3@^2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/vue-timeago3/-/vue-timeago3-2.3.0.tgz#897b82e27c44f198d76b39141e1807e4c381f250"
|
||||
integrity sha512-9rV/f9thgjkBJeF5X2lsUSp4SENYuL0XjrXsaHvNkc0x5wHRiCG/Aefi6Xl0op/X9Oblio9NmNOQGXVWyRWm5A==
|
||||
dependencies:
|
||||
date-fns "^2.28.0"
|
||||
|
||||
vue2-dragula@^2.5.5:
|
||||
version "2.5.5"
|
||||
resolved "https://registry.yarnpkg.com/vue2-dragula/-/vue2-dragula-2.5.5.tgz#a237fb6769b941b4658de2711c350fccd3f4c219"
|
||||
|
||||
Reference in New Issue
Block a user