Compare commits

...

6 Commits

Author SHA1 Message Date
Alex Ant a950a47b28 chore(release): publish
- coopback@1.7.31-alpha.1
 - coopdoc-generator-ts@1.0.75-alpha.1
 - cooptypes@1.0.20-alpha.1
 - coop-notificator@0.0.24-alpha.1
 - terminal@0.1.35-alpha.1
2024-08-23 10:38:04 +05:00
Alex Ant 2609d10c0b update 2024-08-23 10:35:48 +05:00
Alex Ant 7b4cb0f66c publish 2024-08-23 10:34:38 +05:00
Alex Ant 26db0e1e69 push 2024-08-21 15:57:02 +05:00
Alex Ant 62e64cbd22 upgrade 2024-08-21 14:43:43 +05:00
Alex Ant 844a47830f fix types 2024-08-21 13:11:37 +05:00
47 changed files with 471 additions and 289 deletions
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "create-nodejs-express-app",
"version": "1.7.31-alpha.0",
"version": "1.7.31-alpha.1",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "create-nodejs-express-app",
"version": "1.7.31-alpha.0",
"version": "1.7.31-alpha.1",
"license": "MIT",
"dependencies": {
"@a2seven/yoo-checkout": "^1.1.4",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "coopback",
"version": "1.7.31-alpha.0",
"version": "1.7.31-alpha.1",
"description": "",
"private": true,
"bin": "bin/createNodejsApp.js",
@@ -30,7 +30,7 @@ export async function buildComplexDocument(
const document = await generator.getDocument({ hash: raw_document.document.hash });
const user = await User.findOne({ username: raw_document.username });
if (user) {
if (user && user.type != 'service') {
const user_data = await user?.getPrivateData();
const action: Cooperative.Blockchain.IExtendedAction = {
@@ -198,7 +198,10 @@ export async function createInitialOrder(username: string, data: ICreateInitialP
}
export async function catchIPN(ipnBody: IYandexIPN) {
if (!connection.db) throw new Error('Нет подключения');
const payments = await connection.db.collection('payments');
const exist = await payments.findOne({ 'object.id': ipnBody.object.id });
if (!exist) {
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "coopdoc-generator-ts",
"type": "module",
"version": "1.0.75-alpha.0",
"version": "1.0.75-alpha.1",
"private": true,
"packageManager": "pnpm@9.0.6",
"description": "",
+4 -4
View File
@@ -68,7 +68,7 @@ api.getTableRows(
})
```
Те же параметры scope, table, code могут быть использованы для получения информации из модуля [COOPARSER](https://github.com/copenomics/cooparser). Последнее используется, когда необходимо получить исторические данные и нет необходимости проверять их актуальность по наличию таблиц в блокчейне. Однако, таблицы в блокчейне необходимо всегда проверять перед отправкой любой транзакции действия. Нельзя полагаться на данные из парсера при подготовке транзакции действия.
Те же параметры scope, table, code могут быть использованы для получения информации из модуля [COOPARSER](https://github.com/coopenomics/cooparser). Последнее используется, когда необходимо получить исторические данные и нет необходимости проверять их актуальность по наличию таблиц в блокчейне. Однако, таблицы в блокчейне необходимо всегда проверять перед отправкой любой транзакции действия. Нельзя полагаться на данные из парсера при подготовке транзакции действия.
### Транзакция действий
Состояние любого смарт-контракта может изменяться только с помощью действий. Для того, чтобы совершить действия, необходимо сформировать и отправить транзакцию с помощью библиотеки eosjs или альтернатив.
@@ -113,7 +113,7 @@ const api = new Api({ rpc, signatureProvider, textDecoder: new TextDecoder(), te
## Лицензия
[MIT](./LICENSE) License © 2024-PRESENT [CBS VOSKHOD](https://github.com/copenomics)
[MIT](./LICENSE) License © 2024-PRESENT [CBS VOSKHOD](https://github.com/coopenomics)
<!-- Badges -->
@@ -123,7 +123,7 @@ const api = new Api({ rpc, signatureProvider, textDecoder: new TextDecoder(), te
[npm-downloads-href]: https://npmjs.com/package/cooptypes
[bundle-src]: https://img.shields.io/bundlephobia/minzip/cooptypes?style=flat&colorA=080f12&colorB=1fa669&label=minzip
[bundle-href]: https://bundlephobia.com/result?p=cooptypes
[license-src]: https://img.shields.io/github/license/copenomics/cooptypes.svg?style=flat&colorA=080f12&colorB=1fa669
[license-href]: https://github.com/copenomics/cooptypes/blob/main/LICENSE
[license-src]: https://img.shields.io/github/license/coopenomics/cooptypes.svg?style=flat&colorA=080f12&colorB=1fa669
[license-href]: https://github.com/coopenomics/cooptypes/blob/main/LICENSE
[jsdocs-src]: https://img.shields.io/badge/jsdocs-reference-080f12?style=flat&colorA=080f12&colorB=1fa669
[jsdocs-href]: https://www.jsdocs.io/package/cooptypes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "cooptypes",
"type": "module",
"version": "1.0.20-alpha.0",
"version": "1.0.20-alpha.1",
"description": "_description_",
"author": "Alex Ant <dacom.dark.sun@gmail.com>",
"license": "MIT",
@@ -0,0 +1,21 @@
import * as Permissions from '../../../../common/permissions'
import type * as Soviet from '../../../../interfaces/soviet'
import { Actors } from '../../../../common'
/**
* Действие выполняется за подписью {@link Actors._admin | администратора}.
*/
export const authorizations = [
{ permissions: [Permissions.active, Permissions.special], actor: Actors._admin },
] as const
/**
* Имя действия
*/
export const actionName = 'cnfrmindoc'
/**
* @interface
* Действие подтверждает приём заявления администратором
*/
export type IConfirmIncomeDocument = Soviet.ICnfrmindoc
@@ -0,0 +1,21 @@
import * as Permissions from '../../../../common/permissions'
import type * as Soviet from '../../../../interfaces/soviet'
import { Actors } from '../../../../common'
/**
* Действие выполняется за подписью {@link Actors._admin | администратора}.
*/
export const authorizations = [
{ permissions: [Permissions.active, Permissions.special], actor: Actors._admin },
] as const
/**
* Имя действия
*/
export const actionName = 'declnindoc'
/**
* @interface
* Действие отклоняет заявление пайщика администратором
*/
export type IDeclineIncomeDocument = Soviet.IDeclnindoc
@@ -23,3 +23,13 @@ export * as SetRights from './setRights'
* @private
*/
export * as Init from './init'
/**
* Действие подтверждения приёма заявления пайщика
*/
export * as ConfirmIncomeDocument from './confirmIncomeDocument'
/**
* Действие отклонения приёма заявления пайщика
*/
export * as DeclineIncomeDocument from './declineIncomeDocument'
@@ -16,6 +16,6 @@ export const actionName = 'createprog'
/**
* @interface
* Действие редактирует целевую потребительскую программу маркетплейса.
* Действие редактирует целевую потребительскую программу.
*/
export type ICreateMarketProgram = Soviet.ICreateprog
export type ICreateProgram = Soviet.ICreateprog
@@ -12,3 +12,8 @@ export * as EditMarketProgram from './editMarketProgram'
* Действие отключает целевую потребительскую программу маркетплейса.
*/
export * as DisableMarketProgram from './disableMarketProgram'
/**
* Действие отправки заявления на присоединение к ЦПП Кооператива
*/
export * as JoinProgram from './joinProgram'
@@ -0,0 +1,20 @@
import * as Permissions from '../../../../common/permissions'
import type * as Soviet from '../../../../interfaces/soviet'
import { Actors } from '../../../../common'
/**
* Действие выполняется за подписью любого {@link Actors._username | пользователя}.
*/
export const authorizations = [
{ permissions: [Permissions.active], actor: Actors._username },
] as const
/**
* Имя действия
*/
export const actionName = 'joinprog'
/**
* Действие отправки заявления на присоединение к ЦПП кооператива
*/
export type IJoinProgram = Soviet.IJoinprog
@@ -0,0 +1,17 @@
import type * as Soviet from '../../../interfaces/soviet'
import { Actors } from '../../../common'
/**
* Имя таблицы
*/
export const tableName = 'indocuments'
/**
* Таблица хранится в {@link Actors._coopname | области памяти кооператива}.
*/
export const scope = Actors._coopname
/**
* @interface
*/
export type IIncomeDocument = Soviet.IIndocument
@@ -57,3 +57,8 @@ export * as ProgramWallets from './programWallets'
* Таблица содержит сводный баланс пайщиков кооператива.
*/
export * as Wallets from './wallets'
/**
* Таблица содержит заявления пайщиков кооператива, которые ожидают приёма, но не требуют решения совета.
*/
export * as IncomeDocuments from './incomeDocuments'
@@ -4,7 +4,7 @@ import { Actors } from '../../../common'
/**
* Имя таблицы
*/
export const tableName = 'progcomarket'
export const tableName = 'programs'
/**
* Таблица хранится в {@link Actors._coopname | области памяти кооператива}.
@@ -73,6 +73,11 @@ export interface ICooperative {
created_at: ITimePointSec
}
export interface IDelcoop {
registrator: IName
coopname: IName
}
export interface IDocument {
hash: IChecksum256
public_key: IPublicKey
@@ -162,8 +167,3 @@ export interface IVerification {
last_update: ITimePointSec
notice: string
}
export interface IDelcoop {
registrator: IName
coopname: IName
}
@@ -185,7 +185,8 @@ export interface ICreatebranch {
export interface ICreateprog {
coopname: IName
username: IName
draft_id: IUint64
program_type: IName
draft_registry_id: IUint64
hash_of_conditions: IChecksum256
title: string
announce: string
@@ -276,7 +277,7 @@ export interface IEditprog {
coopname: IName
username: IName
program_id: IUint64
draft_id: IUint64
draft_registry_id: IUint64
hash_of_conditions: IChecksum256
title: string
announce: string
@@ -401,6 +402,7 @@ export interface IParticipant {
export interface IProgram {
id: IUint64
coopname: IName
program_type: IName
draft_registry_id: IUint64
hash_of_conditions: IChecksum256
is_active: boolean
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "coop-notificator",
"type": "module",
"version": "0.0.24-alpha.0",
"version": "0.0.24-alpha.1",
"private": true,
"packageManager": "pnpm@9.1.1",
"description": "_description_",
+1 -1
View File
@@ -10,5 +10,5 @@
"i18n-ally.localesPaths": ["src/i18n"],
"typescript.format.enable": true,
"typescript.format.indentSwitchCase": false,
"typescript.validate.enable": true
"typescript.validate.enable": true,
}
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "terminal",
"version": "0.1.35-alpha.0",
"version": "0.1.35-alpha.1",
"description": "A Terminal Project",
"productName": "Terminal App",
"author": "Alex Ant <dacom.dark.sun@gmail.com>",
+5 -1
View File
@@ -1,5 +1,7 @@
<template lang='pug'>
router-view(v-if="isLoaded")
div
router-view(v-if="isLoaded")
RootPopup
</template>
<script setup lang="ts">
@@ -13,6 +15,8 @@ import { Cookies, LocalStorage, QSpinner, useQuasar } from 'quasar';
import { COOPNAME } from 'src/shared/config';
import { useCardStore } from './providers/card/store';
import { RootPopup } from 'src/widgets/Desktop/RootPopup';
const $q = useQuasar()
const router = useRouter()
@@ -43,6 +43,7 @@ export const manifest = {
title: 'Удостоверение',
icon: '',
roles: [],
programs: ['wallet']
},
path: 'identity',
name: 'user-identity',
@@ -3,20 +3,20 @@ import { ContractsList, TablesList } from 'src/shared/config';
import {
IAddressesData,
IAdministratorData,
ICoopMarketProgramData,
ILoadCoopMarketPrograms,
ICoopProgramData,
ILoadCoopPrograms,
ILoadCooperativeAddresses,
} from '../model';
import {Cooperative, FundContract, RegistratorContract } from 'cooptypes';
import {Cooperative, FundContract, RegistratorContract, SovietContract } from 'cooptypes';
async function loadMarketPrograms(
params: ILoadCoopMarketPrograms
): Promise<ICoopMarketProgramData[]> {
async function loadPrograms(
params: ILoadCoopPrograms
): Promise<ICoopProgramData[]> {
return (await fetchTable(
ContractsList.Soviet,
SovietContract.contractName.production,
params.coopname,
TablesList.CoopMarketPrograms
)) as ICoopMarketProgramData[];
SovietContract.Tables.Programs.tableName
)) as ICoopProgramData[];
}
async function loadAdmins(coopname: string): Promise<IAdministratorData[]> {
@@ -94,7 +94,7 @@ async function loadCooperativeAddresses(
}
export const api = {
loadMarketPrograms,
loadPrograms,
loadCooperativeAddresses,
loadPublicCooperativeData,
loadAdmins,
@@ -3,8 +3,8 @@ import { Ref, ref, ComputedRef, computed } from 'vue';
import { api } from '../api';
import {
IAddressesData,
ICoopMarketProgramData,
ILoadCoopMarketPrograms,
ICoopProgramData,
ILoadCoopPrograms,
ILoadCooperativeAddresses,
IAdministratorData,
} from './types';
@@ -16,14 +16,14 @@ interface ICooperativeStore {
// методы
loadFunds: (coopname: string) => Promise<void>;
loadAddresses: (params: ILoadCooperativeAddresses) => Promise<void>;
loadMarketPrograms: (params: ILoadCoopMarketPrograms) => Promise<void>;
loadPrograms: (params: ILoadCoopPrograms) => Promise<void>;
loadPrivateCooperativeData: () => Promise<void>;
loadContacts: () => Promise<void>;
loadPublicCooperativeData: (coopname: string) => Promise<void>;
loadAdmins: (coopname: string) => Promise<void>;
// данные
admins: Ref<IAdministratorData[]>;
marketPrograms: Ref<ICoopMarketProgramData[]>;
programs: Ref<ICoopProgramData[]>;
addresses: Ref<IAddressesData[]>;
contacts: Ref<Cooperative.Model.IContacts | undefined>
publicCooperativeData: Ref<RegistratorContract.Tables.Cooperatives.ICooperative | undefined>;
@@ -39,7 +39,7 @@ interface ICooperativeStore {
export const useCooperativeStore = defineStore(
namespace,
(): ICooperativeStore => {
const marketPrograms = ref([] as ICoopMarketProgramData[]);
const programs = ref([] as ICoopProgramData[]);
const addresses = ref([] as IAddressesData[]);
const admins = ref([] as IAdministratorData[]);
const publicCooperativeData = ref<RegistratorContract.Tables.Cooperatives.ICooperative>();
@@ -83,10 +83,10 @@ export const useCooperativeStore = defineStore(
);
};
const loadMarketPrograms = async (
params: ILoadCoopMarketPrograms
const loadPrograms = async (
params: ILoadCoopPrograms
): Promise<void> => {
marketPrograms.value = await api.loadMarketPrograms(params);
programs.value = await api.loadPrograms(params);
};
const loadAddresses = async (
@@ -101,12 +101,12 @@ export const useCooperativeStore = defineStore(
return {
loadFunds,
loadMarketPrograms,
loadPrograms,
loadAddresses,
loadContacts,
loadPublicCooperativeData,
loadPrivateCooperativeData,
marketPrograms,
programs,
addresses,
contacts,
privateCooperativeData,
@@ -1,11 +1,11 @@
import { SovietContract } from 'cooptypes';
import { IUser } from 'src/shared/lib/types/user';
export type ICoopMarketProgramData =
SovietContract.Tables.MarketPrograms.IMarketPrograms;
export type ICoopProgramData =
SovietContract.Tables.Programs.IProgram;
export type IAddressesData = SovietContract.Tables.Addresses.IAddress;
export interface ILoadCoopMarketPrograms {
export interface ILoadCoopPrograms {
coopname: string;
}
@@ -4,7 +4,7 @@ import { computed, ComputedRef, Ref, ref } from 'vue';
import { Session } from '@wharfkit/session';
import { WalletPluginPrivateKey } from '@wharfkit/wallet-plugin-privatekey';
import { FailAlert, readBlockchain } from 'src/shared/api';
import { CHAIN_ID, CHAIN_URL } from 'src/shared/config';
import { CHAIN_ID, CHAIN_URL, SYSTEM_TOKEN } from 'src/shared/config';
import { PrivateKey, Serializer } from '@wharfkit/antelope';
import { GetInfoResult } from 'eosjs/dist/eosjs-rpc-interfaces';
@@ -64,6 +64,7 @@ export const useSessionStore = defineStore('session', (): ISessionStore => {
chain: {
id: CHAIN_ID,
url: CHAIN_URL,
systemToken: SYSTEM_TOKEN
},
walletPlugin: new WalletPluginPrivateKey(
globalStore.wif as PrivateKey
@@ -12,7 +12,7 @@ import {
IDepositData,
IWithdrawData,
IProgramWalletData,
ICoopMarketProgramData,
ICoopProgramData,
ExtendedProgramWalletData,
IGetPaymentMethods,
IGetResponsePaymentMethodData,
@@ -28,6 +28,7 @@ import {
ILoadUserProgramWallets,
ILoadUserWithdraws,
} from '../model';
import { SovietContract } from 'cooptypes';
async function loadSingleUserWalletData(
params: ILoadSingleUserWallet
@@ -121,15 +122,15 @@ async function loadUserProgramWalletsData(
params: ILoadUserProgramWallets
): Promise<ExtendedProgramWalletData[]> {
const programs = (await fetchTable(
ContractsList.Soviet,
SovietContract.contractName.production,
params.coopname,
TablesList.CoopMarketPrograms
)) as ICoopMarketProgramData[];
SovietContract.Tables.Programs.tableName
)) as ICoopProgramData[];
const program_wallets = (await fetchTable(
ContractsList.Soviet,
SovietContract.contractName.production,
params.coopname,
TablesList.ProgramWallets,
SovietContract.Tables.ProgramWallets.tableName,
params.username,
params.username,
LimitsList.None,
@@ -24,9 +24,9 @@ interface IWalletStore {
withdraws: Ref<IWithdrawData[]>;
methods: Ref<IPaymentMethodData[]>;
update: (params: ILoadUserWallet) => Promise<void>;
loadUserWalet: (params: ILoadUserWallet) => Promise<void>;
//TODO move to Features
//TODO move to features
createDeposit: (params: ICreateDeposit) => Promise<IPaymentOrder>;
createWithdraw: (params: ICreateWithdraw) => Promise<void>;
}
@@ -45,16 +45,17 @@ export const useWalletStore = defineStore(namespace, (): IWalletStore => {
const program_wallets = ref<ExtendedProgramWalletData[]>([]);
const methods = ref<IPaymentMethodData[]>([]);
const createEmptyWallet = (): IWalletData => ({
username: '',
coopname: '',
available: `0.0000 ${CURRENCY}`,
blocked: `0.0000 ${CURRENCY}`,
minimum: `0.0000 ${CURRENCY}`,
});
const loadUserWalet = async (params: ILoadUserWallet) => {
const createEmptyWallet = (): IWalletData => ({
username: '',
coopname: '',
available: `0.0000 ${CURRENCY}`,
blocked: `0.0000 ${CURRENCY}`,
minimum: `0.0000 ${CURRENCY}`,
});
const update = async (params: ILoadUserWallet) => {
try {
const data = await Promise.all([
api.loadSingleUserWalletData(params),
@@ -90,7 +91,7 @@ export const useWalletStore = defineStore(namespace, (): IWalletStore => {
deposits,
withdraws,
methods,
update,
loadUserWalet,
createDeposit,
createWithdraw,
};
@@ -2,12 +2,13 @@ import { SovietContract, GatewayContract } from 'cooptypes';
export type IProgramWalletData =
SovietContract.Tables.ProgramWallets.IProgramWallet;
export type ICoopMarketProgramData =
SovietContract.Tables.MarketPrograms.IMarketPrograms;
export type ICoopProgramData =
SovietContract.Tables.Programs.IProgram;
export type ExtendedProgramWalletData = IProgramWalletData & {
program_type: string;
program_details: ICoopMarketProgramData; // | или другие типы будущих программ
program_details: ICoopProgramData; // | или другие типы будущих программ
};
export type IDepositData = GatewayContract.Tables.Deposits.IDeposits;
+3 -2
View File
@@ -20,7 +20,8 @@ declare module 'vue-router' {
// Расширяем интерфейс RouteMeta, добавляя новые свойства
interface RouteMeta {
roles?: string[];
// title: string
// icon: string
programs?: string[]
title: string
icon: string
}
}
@@ -20,8 +20,8 @@ const props = defineProps({
})
const cooperativeStore = useCooperativeStore()
cooperativeStore.loadMarketPrograms({ coopname: props.coopname })
const programs = computed(() => cooperativeStore.marketPrograms)
cooperativeStore.loadPrograms({ coopname: props.coopname })
const programs = computed(() => cooperativeStore.programs)
const isSubmitting = ref(false)
@@ -1,5 +1,5 @@
import { TransactResult } from '@wharfkit/session';
import { RegistratorContract, SovietContract } from 'cooptypes';
import { RegistratorContract } from 'cooptypes';
import { useSessionStore } from 'src/entities/Session';
import { useGlobalStore } from 'src/shared/store';
@@ -33,7 +33,7 @@ export function useAddPaymentMethod() {
async function addPaymentMethod(params: IAddPaymentMethod) {
await store.update({
await store.loadUserWalet({
coopname: COOPNAME,
username: params.username,
})
@@ -44,7 +44,7 @@ export function useAddPaymentMethod() {
console.log(store.methods, store.methods.length, params.method_id)
await sendPOST(`/v1/payments/methods/${params.username}/add`, params)
await store.update({
await store.loadUserWalet({
coopname: COOPNAME,
username: session.username
})
@@ -17,7 +17,7 @@ export function useDeletePaymentMethod() {
await sendPOST(`/v1/payments/methods/${username}/delete`, {method_id})
await store.update({
await store.loadUserWalet({
coopname: COOPNAME,
username: session.username
})
@@ -27,7 +27,7 @@ import { BASE_PAYMENT_FEE, COOPNAME, CURRENCY } from 'src/shared/config'
import { SuccessAlert, FailAlert } from 'src/shared/api'
import { useSessionStore } from 'src/entities/Session'
const { createDeposit, update } = useWalletStore()
const { createDeposit, loadUserWalet } = useWalletStore()
//TODO move username to Session entity
const session = useSessionStore()
@@ -80,7 +80,7 @@ const paymentFail = (): void => {
}
const paymentSuccess = (): void => {
update({ coopname: COOPNAME, username: session.username as string } as ILoadUserWallet)
loadUserWalet({ coopname: COOPNAME, username: session.username as string } as ILoadUserWallet)
clear()
SuccessAlert('Платеж успешно принят')
}
@@ -6,7 +6,7 @@ export enum TablesList {
Deposits = 'deposits', //* Таблица депозитов пайщиков кооператива */
Withdraws = 'withdraws', //* Таблица возвратов пайщиков кооператива */
ProgramWallets = 'progwallets', //* Таблица кошельков программ кооператива */
CoopMarketPrograms = 'progcomarket', //* Таблица балансов ЦПП пайщика кооператива */
CoopPrograms = 'progcomarket', //* Таблица балансов ЦПП пайщика кооператива */
CoopMarketRequests = 'exchange',
CooperativeAddresses = 'addresses',
}
@@ -0,0 +1 @@
export * from './ui'
@@ -0,0 +1,8 @@
<template lang="pug">
div
SignProgramPopup
</template>
<script lang="ts" setup>
import { SignProgramPopup } from '../../SignProgramPopup';
</script>
@@ -0,0 +1 @@
export {default as RootPopup} from './RootPopup.vue'
@@ -0,0 +1 @@
export * from './ui'
@@ -0,0 +1,47 @@
<template lang="pug">
div
//- p has_requirements {{ required }}
//- p programs {{ coop_programs }}
//- p user_programs {{ user_programs }}
</template>
<script lang="ts" setup>
import { useCooperativeStore } from 'src/entities/Cooperative';
import { useSessionStore } from 'src/entities/Session';
import { useWalletStore } from 'src/entities/Wallet';
import { COOPNAME } from 'src/shared/config';
import { computed } from 'vue';
import { useRoute } from 'vue-router';
const route = useRoute()
const session = useSessionStore()
const wallet = useWalletStore()
const coop = useCooperativeStore()
const required = computed(() => (route.meta?.programs))
const coop_programs = computed(() => coop.programs)
const user_programs = computed(() => wallet.program_wallets)
const loadCoopPrograms = async () => {
await coop.loadPrograms({
coopname: COOPNAME
})
}
const loadUserPrograms = async () => {
if (session.username)
wallet.loadUserWalet({
coopname: COOPNAME,
username: session.username
})
}
loadCoopPrograms()
loadUserPrograms()
</script>
@@ -0,0 +1 @@
export {default as SignProgramPopup} from './SignProgramPopup.vue'
@@ -96,7 +96,7 @@ const wallet = useWalletStore()
const username = computed(() => props.username)
wallet.update({ coopname: COOPNAME, username: username.value })
wallet.loadUserWalet({ coopname: COOPNAME, username: username.value })
function isSBPData(data: ISBPData | IBankTransferData): data is ISBPData {
return (data as ISBPData).phone !== undefined;
@@ -31,15 +31,15 @@ const props = defineProps({
const username = computed(() => props.username)
const update = () => {
wallet.update({ coopname: COOPNAME, username: username.value })
const updateUserWallet = () => {
wallet.loadUserWalet({ coopname: COOPNAME, username: username.value })
}
update()
updateUserWallet()
const interval = setInterval(() => {
update()
}, 3000)
updateUserWallet()
}, 10000)
onBeforeUnmount(() => {
clearInterval(interval)
+2 -2
View File
@@ -9,8 +9,8 @@
"coopdoc-generator-ts": "workspace:*",
"cooptypes": "workspace:*",
"gh-pages": "^6.1.1",
"lerna": "^8.1.6",
"lint-staged": "^15.2.7",
"lerna": "^8.1.8",
"lint-staged": "^15.2.9",
"terminal": "workspace:*"
},
"scripts": {
+211 -202
View File
File diff suppressed because it is too large Load Diff