Skip to content

Commit

Permalink
Bump gear-js and polkadot-js (#1291)
Browse files Browse the repository at this point in the history
  • Loading branch information
osipov-mit authored May 26, 2023
1 parent 4ebbece commit 2de9e5c
Show file tree
Hide file tree
Showing 18 changed files with 1,364 additions and 401 deletions.
3 changes: 2 additions & 1 deletion idea/common/src/enums/program-status.enum.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
export enum ProgramStatus {
UNKNOWN = 'unknown',
PROGRAM_SET = 'programSet',
ACTIVE = 'active',
TERMINATED = 'terminated',
EXITED = 'exited',
PAUSED = 'paused'
PAUSED = 'paused',
}
14 changes: 7 additions & 7 deletions idea/frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,17 @@
"eject": "react-scripts eject"
},
"dependencies": {
"@gear-js/api": "0.30.1",
"@gear-js/react-hooks": "0.5.12",
"@gear-js/api": "0.31.2",
"@gear-js/react-hooks": "0.5.17",
"@gear-js/ui": "workspace:^",
"@hcaptcha/react-hcaptcha": "^1.4.4",
"@mantine/form": "^5.4.0",
"@polkadot/api": "9.14.1",
"@polkadot/extension-dapp": "0.44.8",
"@polkadot/api": "10.7.1",
"@polkadot/extension-dapp": "0.46.3",
"@polkadot/react-identicon": "2.9.14",
"@polkadot/types": "9.14.1",
"@polkadot/util": "10.2.1",
"@polkadot/wasm-crypto": "6.4.1",
"@polkadot/types": "10.7.1",
"@polkadot/util": "12.2.1",
"@polkadot/wasm-crypto": "7.2.1",
"@react-aria/utils": "^3.14.2",
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^13.3.0",
Expand Down
7 changes: 4 additions & 3 deletions idea/frontend/src/app/providers/events/Provider.tsx
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
import { useState, useEffect } from 'react';
import { useApi, ProviderProps } from '@gear-js/react-hooks';

import { IdeaEvent, Section } from 'entities/explorer';
import { EventRecords, IdeaEvent, Section } from 'entities/explorer';

import { UnsubscribePromise } from '@polkadot/api/types';
import { EventsContext } from './Context';

const EventsProvider = ({ children }: ProviderProps) => {
const { api } = useApi();
const [events, setEvents] = useState<IdeaEvent[]>();

const subscribeToEvents = () =>
api.query.system.events(async (records) => {
api.query.system.events(async (records: EventRecords) => {
const { createdAtHash } = records;

if (createdAtHash) {
Expand All @@ -23,7 +24,7 @@ const EventsProvider = ({ children }: ProviderProps) => {

setEvents((prevEvents) => (prevEvents ? [...newEvents, ...prevEvents] : newEvents));
}
});
}) as unknown as UnsubscribePromise;

useEffect(() => {
if (!api) {
Expand Down
4 changes: 2 additions & 2 deletions idea/frontend/src/entities/explorer/model/types.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Vec } from '@polkadot/types';
import { FrameSystemEventRecord } from '@polkadot/types/lookup';
import { EventRecord } from '@polkadot/types/interfaces';

type EventRecords = Vec<FrameSystemEventRecord>;
type EventRecords = Vec<EventRecord>;

export type { EventRecords };
56 changes: 8 additions & 48 deletions idea/frontend/src/hooks/useProgramActions/helpers.ts
Original file line number Diff line number Diff line change
@@ -1,61 +1,21 @@
import { UnsubscribePromise } from '@polkadot/api/types';
import { GearApi, MessageQueued, MessagesDispatched, ProgramChanged } from '@gear-js/api';
import { HexString } from '@polkadot/util/types';

import { Method } from 'entities/explorer';
import { GearApi } from '@gear-js/api';
import { ProgramStatus } from 'entities/program';

const waitForProgramInit = (api: GearApi, programId: string) => {
let messageId: HexString;
let unsubPromise: UnsubscribePromise;

const unsubscribe = async () => (await unsubPromise)();

return new Promise<string>((resolve) => {
unsubPromise = api.query.system.events((events) => {
events.forEach(({ event }) => {
switch (event.method) {
case Method.MessageQueued: {
const meEvent = event as MessageQueued;

if (meEvent.data.destination.eq(programId) && meEvent.data.entry.isInit) {
messageId = meEvent.data.id.toHex();
}

break;
}

case Method.MessagesDispatched: {
const mdEvent = event as MessagesDispatched;

// eslint-disable-next-line no-restricted-syntax
for (const [id, status] of mdEvent.data.statuses) {
if (id.eq(messageId) && status.isFailed) {
resolve(ProgramStatus.Terminated);
}
}

break;
}

case Method.ProgramChanged: {
const pcEvent = event as ProgramChanged;

if (pcEvent.data.id.eq(programId)) {
if (pcEvent.data.change.isActive) {
resolve(ProgramStatus.Active);
} else if (pcEvent.data.change.isPaused || pcEvent.data.change.isInactive) {
resolve(ProgramStatus.Exited);
}
}

break;
}

default:
break;
unsubPromise = api.gearEvents.subscribeToGearEvent('ProgramChanged', ({ data }) => {
if (data.id.eq(programId)) {
if (data.change.isActive) {
resolve(ProgramStatus.Active);
} else if (data.change.isTerminated) {
resolve(ProgramStatus.Terminated);
}
});
}
});
}).finally(unsubscribe);
};
Expand Down
5 changes: 2 additions & 3 deletions idea/frontend/src/pages/explorer/ui/mainTable/MainTable.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { Extrinsic } from '@polkadot/types/interfaces';
import { Extrinsic , EventRecord } from '@polkadot/types/interfaces';
import { Vec } from '@polkadot/types';
import { FrameSystemEventRecord } from '@polkadot/types/lookup';
import clsx from 'clsx';

import { IdeaEvent } from 'entities/explorer';
Expand All @@ -13,7 +12,7 @@ import styles from './MainTable.module.scss';

type Props = {
extrinsics: Extrinsic[] | undefined;
eventRecords: Vec<FrameSystemEventRecord> | undefined;
eventRecords: Vec<EventRecord> | undefined;
error: string;
};

Expand Down
4 changes: 2 additions & 2 deletions idea/frontend/src/pages/explorer/ui/system/System.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Vec } from '@polkadot/types';
import { FrameSystemEventRecord } from '@polkadot/types/lookup';
import { EventRecord } from '@polkadot/types/interfaces';

import { IdeaEvent } from 'entities/explorer';
import { Placeholder } from 'entities/placeholder';
Expand All @@ -9,7 +9,7 @@ import { Event } from '../event';
import styles from './System.module.scss';

type Props = {
eventRecords: Vec<FrameSystemEventRecord> | undefined;
eventRecords: Vec<EventRecord> | undefined;
isError: boolean;
};

Expand Down
35 changes: 18 additions & 17 deletions idea/indexer/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,25 +14,26 @@
},
"license": "GPL-3.0",
"dependencies": {
"@gear-js/api": "0.30.3",
"@gear-js/common": "workspace:^",
"@polkadot/api": "9.14.1",
"amqplib": "^0.10.3",
"class-transformer": "^0.5.1",
"pg": "^8.10.0",
"rxjs": "^7.8.0",
"typeorm": "^0.3.12",
"winston": "^3.8.2"
"@gear-js/api": "0.31.2",
"@gear-js/common": "workspace:",
"@polkadot/api": "10.7.1",
"@polkadot/wasm-crypto": "7.2.1",
"amqplib": "0.10.3",
"class-transformer": "0.5.1",
"pg": "8.10.0",
"rxjs": "7.8.0",
"typeorm": "0.3.12",
"winston": "3.8.2"
},
"devDependencies": {
"@polkadot/types": "9.14.1",
"@types/amqplib": "^0.10.1",
"@types/node": "^18.15.11",
"jest": "^29.5.0",
"prettier": "^2.8.7",
"ts-jest": "^29.0.5",
"ts-node-dev": "^2.0.0",
"typescript": "^5.0.2"
"@polkadot/types": "10.7.1",
"@types/amqplib": "0.10.1",
"@types/node": "18.15.11",
"jest": "29.5.0",
"prettier": "2.8.7",
"ts-jest": "29.0.5",
"ts-node-dev": "2.0.0",
"typescript": "5.0.2"
},
"scripts": {
"dev": "clear && ts-node-dev src/main.ts",
Expand Down
3 changes: 2 additions & 1 deletion idea/indexer/src/common/enums/program-status.enum.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
export enum ProgramStatus {
UNKNOWN = 'unknown',
PROGRAM_SET = 'programSet',
ACTIVE = 'active',
TERMINATED = 'terminated',
EXITED = 'exited',
PAUSED = 'paused'
PAUSED = 'paused',
}
20 changes: 12 additions & 8 deletions idea/indexer/src/common/helpers/get-payload-by-gear-event.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,14 +57,18 @@ function userMessageReadPayload({ id, reason }: UserMessageReadData): UserMessag
}

function programChangedPayload({ id, change }: ProgramChangedData): ProgramChangedInput {
const status = change.isActive
? ProgramStatus.ACTIVE
: change.isInactive
? ProgramStatus.EXITED
: change.isPaused
? ProgramStatus.PAUSED
: ProgramStatus.UNKNOWN;
const expiration = change.isActive ? change.asActive.expiration.toString() : null;
let status: ProgramStatus;
let expiration: string;

if (change.isActive) status = ProgramStatus.ACTIVE;
else if (change.isInactive) status = ProgramStatus.EXITED;
else if (change.isTerminated) status = ProgramStatus.TERMINATED;
else if (change.isPaused) status = ProgramStatus.PAUSED;
else if (change.isProgramSet) status = ProgramStatus.PROGRAM_SET;
else status = ProgramStatus.UNKNOWN;

if (change.isActive) expiration = change.asActive.expiration.toString();
else if (change.isExpirationChanged) expiration = change.asExpirationChanged.expiration.toString();

return { id: id.toHex(), status, expiration };
}
Expand Down
13 changes: 8 additions & 5 deletions idea/indexer/src/gear/indexer.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { CodeMetadata, ProgramMap, CodeChanged, GearApi, generateCodeHash, MessageQueued } from '@gear-js/api';
import { CodeMetadata, CodeChanged, GearApi, generateCodeHash, MessageQueued, IProgram } from '@gear-js/api';
import { HexString } from '@polkadot/util/types';
import { filterEvents } from '@polkadot/api/util';
import { GenericEventData } from '@polkadot/types';
Expand All @@ -22,6 +22,7 @@ import {
ProgramChangedInput,
CodeChangedInput,
MessagesDispatchedDataInput,
ProgramStatus,
} from '../common';
import { Block, Code, Message, Meta, Program } from '../database/entities';
import { BlockService, CodeService, MessageService, MetaService, ProgramService, StatusService } from '../services';
Expand Down Expand Up @@ -268,17 +269,17 @@ export class GearIndexer {
}

for (const tx of extrinsics) {
const foundEvent = filterEvents(tx.hash, block, block.events, status).events.find(({ event }) =>
const mqEvent = filterEvents(tx.hash, block, block.events, status).events.find(({ event }) =>
this.api.events.gear.MessageQueued.is(event),
);

if (!foundEvent) {
if (!mqEvent) {
continue;
}

const {
data: { source, destination },
} = foundEvent.event as MessageQueued;
} = mqEvent.event as MessageQueued;
const programId = destination.toHex();
const owner = source.toHex();
const blockHash = block.block.hash.toHex();
Expand All @@ -304,6 +305,7 @@ export class GearIndexer {
code,
genesis: this.genesis,
meta,
status: ProgramStatus.PROGRAM_SET,
}),
);
}
Expand Down Expand Up @@ -391,7 +393,8 @@ export class GearIndexer {
}

public async indexBlockWithMissedProgram(programId: HexString): Promise<Program | null> {
const progStorage = (await this.api.query.gearProgram.programStorage(programId)) as Option<ProgramMap>;
const progStorage = (await this.api.query.gearProgram.programStorage(programId)) as Option<IProgram>;

if (progStorage.isSome) {
const blockNumber = progStorage.unwrap()[1].toNumber();

Expand Down
11 changes: 4 additions & 7 deletions idea/indexer/src/gear/temp-state.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { CodeStatus, MessageReadReason } from '@gear-js/common';

import { MessageEntryPoint, MessageStatus, ProgramStatus, generateUUID } from '../common';
import { MessageStatus, ProgramStatus, generateUUID } from '../common';
import { Block, Code, Message, Meta, Program } from '../database';
import { BlockService, CodeService, MessageService, MetaService, ProgramService } from '../services';

Expand Down Expand Up @@ -121,7 +121,9 @@ export class TempState {
const program = await this.getProgram(id);
if (program) {
program.status = status;
program.expiration = expiration;
if (expiration) {
program.expiration = expiration;
}
}
}

Expand All @@ -138,11 +140,6 @@ export class TempState {
const msg = await this.getMsg(id);
if (msg) {
msg.processedWithPanic = status !== 'Success';
if (status === 'Failed') {
if (msg.entry === MessageEntryPoint.INIT) {
await this.setProgramStatus(msg.destination, ProgramStatus.TERMINATED);
}
}
}
}
}
Expand Down
25 changes: 13 additions & 12 deletions idea/test-balance/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,20 @@
"author": "",
"license": "ISC",
"dependencies": {
"@gear-js/api": "0.30.3",
"@gear-js/common": "workspace:^",
"@polkadot/api": "9.14.1",
"@types/amqplib": "^0.8.2",
"amqplib": "^0.10.3",
"@gear-js/api": "0.31.2",
"@gear-js/common": "workspace:",
"@polkadot/api": "10.7.1",
"@polkadot/wasm-crypto": "7.2.1",
"@types/amqplib": "0.8.2",
"amqplib": "0.10.3",
"chalk": "4.1.2",
"class-transformer": "^0.5.1",
"express": "^4.18.1",
"nodemon": "^2.0.16",
"pg": "^8.7.1",
"postgres": "^1.0.2",
"typeorm": "^0.3.9",
"winston": "^3.3.3"
"class-transformer": "0.5.1",
"express": "4.18.1",
"nodemon": "2.0.16",
"pg": "8.7.1",
"postgres": "1.0.2",
"typeorm": "0.3.9",
"winston": "3.3.3"
},
"devDependencies": {
"@types/express": "4.17.13",
Expand Down
4 changes: 2 additions & 2 deletions idea/tests/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
"@babel/plugin-transform-typescript": "7.20.2",
"@babel/preset-env": "7.20.2",
"@babel/preset-typescript": "7.18.6",
"@gear-js/api": "0.30.3",
"@polkadot/api": "9.14.1",
"@gear-js/api": "0.31.2",
"@polkadot/api": "10.7.1",
"babel-jest": "28.1.3",
"chai": "4.3.7",
"dotenv": "16.0.3",
Expand Down
Loading

0 comments on commit 2de9e5c

Please sign in to comment.