Browse Source

Compatibility with storage_working_group_runtime_changes

Leszek Wiesner 4 years ago
parent
commit
04ed336979

+ 4 - 3
pioneer/packages/joy-forum/src/Context.tsx

@@ -2,7 +2,8 @@
 // NOTE: The purpose of this context is to immitate a Substrate storage for the forum until it's implemented as a substrate runtime module.
 
 import React, { useReducer, createContext, useContext } from 'react';
-import { Category, Thread, Reply, ModerationAction, BlockchainTimestamp } from '@joystream/types/forum';
+import { Category, Thread, Reply, ModerationAction } from '@joystream/types/forum';
+import { BlockAndTime } from '@joystream/types/media';
 import { Option, Text, GenericAccountId } from '@polkadot/types';
 
 type CategoryId = number;
@@ -220,7 +221,7 @@ function reducer (state: ForumState, action: ForumAction): ForumState {
 
       const thread = threadById.get(id) as Thread;
       const moderation = new ModerationAction({
-        moderated_at: BlockchainTimestamp.newEmpty(),
+        moderated_at: BlockAndTime.newEmpty(),
         moderator_id: new GenericAccountId(moderator),
         rationale: new Text(rationale)
       });
@@ -285,7 +286,7 @@ function reducer (state: ForumState, action: ForumAction): ForumState {
 
       const reply = replyById.get(id) as Reply;
       const moderation = new ModerationAction({
-        moderated_at: BlockchainTimestamp.newEmpty(),
+        moderated_at: BlockAndTime.newEmpty(),
         moderator_id: new GenericAccountId(moderator),
         rationale: new Text(rationale)
       });

+ 8 - 1
types/src/bureaucracy/index.ts

@@ -75,6 +75,8 @@ export class WorkerApplication extends JoyStruct<IWorkerApplication> {
 
 export class WorkerId extends ActorId { };
 
+export class StorageProviderId extends WorkerId { };
+
 export class WorkerApplicationIdSet extends BTreeSet.with(WorkerApplicationId) { };
 
 export class WorkerApplicationIdToWorkerIdMap extends BTreeMap.with(WorkerApplicationId, WorkerId) { };
@@ -140,6 +142,10 @@ export class Worker extends JoyStruct<IWorker> {
   get role_stake_profile(): Option<WorkerRoleStakeProfile> {
     return this.getField<Option<WorkerRoleStakeProfile>>('role_stake_profile');
   }
+
+  get is_active(): boolean {
+    return !Boolean(this.isEmpty);
+  }
 }
 
 export type ISlashableTerms = {
@@ -306,7 +312,8 @@ export function registerBureaucracyTypes() {
       WorkerId,
       WorkerOf: Worker,
       WorkerOpening,
-      WorkerOpeningId
+      WorkerOpeningId,
+      StorageProviderId
     });
   } catch (err) {
     console.error('Failed to register custom types of bureaucracy module', err);

+ 15 - 0
types/src/content-working-group/index.ts

@@ -212,6 +212,11 @@ export class CuratorInduction extends JoyStruct<ICuratorInduction> {
     return this.getField<CuratorApplicationId>('curator_application_id')
   }
 
+  // Helper for bureaucracy compatibility
+  get worker_application_id(): CuratorApplicationId {
+    return this.curator_application_id;
+  }
+
   get at_block(): u32 {
     return this.getField<u32>('at_block')
   }
@@ -290,6 +295,11 @@ export class CuratorApplication extends JoyStruct<ICuratorApplication> {
     return this.getField<CuratorOpeningId>('curator_opening_id')
   }
 
+  // Helper for bureaucracy compatibility
+  get worker_opening_id(): CuratorOpeningId {
+    return this.curator_opening_id;
+  }
+
   get member_id(): MemberId {
     return this.getField<MemberId>('member_id')
   }
@@ -467,6 +477,11 @@ export class Lead extends JoyStruct<ILead> {
     return this.getField<GenericAccountId>('role_account')
   }
 
+  // Helper for bureaucracy compatibility
+  get role_account_id(): GenericAccountId {
+    return this.role_account;
+  }
+
   get reward_relationship(): Option<RewardRelationshipId> {
     return this.getField<Option<RewardRelationshipId>>('reward_relationship')
   }

+ 17 - 45
types/src/forum.ts

@@ -1,39 +1,12 @@
 import { getTypeRegistry, bool, u16, u32, u64, Text, Option, Vec as Vector} from '@polkadot/types';
-import { AccountId, Moment, BlockNumber } from '@polkadot/types/interfaces';
+import { AccountId } from '@polkadot/types/interfaces';
 import { GenericAccountId } from '@polkadot/types';
+import { BlockAndTime } from './media';
 
 import { JoyStruct } from './JoyStruct';
 
-// Based on copypasta from joy-media/BlockAndTimeType
-export type BlockchainTimestampType = {
-  block: BlockNumber,
-  time: Moment
-};
-
-// Based on copypasta from joy-media/BlockAndTime
-export class BlockchainTimestamp extends JoyStruct<BlockchainTimestampType> {
-  constructor (value?: BlockchainTimestampType) {
-    super({
-      block: u32, // BlockNumber
-      time: u64, // Moment
-    }, value);
-  }
-
-  get block (): BlockNumber {
-    return this.getField('block');
-  }
-
-  get time (): Moment {
-    return this.getField('time');
-  }
-
-  static newEmpty (): BlockchainTimestamp {
-    return new BlockchainTimestamp({} as BlockchainTimestampType);
-  }
-}
-
 export type ModerationActionType = {
-  moderated_at: BlockchainTimestamp,
+  moderated_at: BlockAndTime,
   moderator_id: AccountId,
   rationale: Text
 };
@@ -41,13 +14,13 @@ export type ModerationActionType = {
 export class ModerationAction extends JoyStruct<ModerationActionType> {
   constructor (value: ModerationActionType) {
     super({
-      moderated_at: BlockchainTimestamp,
+      moderated_at: BlockAndTime,
       moderator_id: GenericAccountId,
       rationale: Text
     }, value);
   }
 
-  get moderated_at (): BlockchainTimestamp {
+  get moderated_at (): BlockAndTime {
     return this.getField('moderated_at');
   }
 
@@ -61,19 +34,19 @@ export class ModerationAction extends JoyStruct<ModerationActionType> {
 }
 
 export type PostTextChangeType = {
-  expired_at: BlockchainTimestamp,
+  expired_at: BlockAndTime,
   text: Text
 };
 
 export class PostTextChange extends JoyStruct<PostTextChangeType> {
   constructor (value: PostTextChangeType) {
     super({
-      expired_at: BlockchainTimestamp,
+      expired_at: BlockAndTime,
       text: Text
     }, value);
   }
 
-  get expired_at (): BlockchainTimestamp {
+  get expired_at (): BlockAndTime {
     return this.getField('expired_at');
   }
 
@@ -154,7 +127,7 @@ export type CategoryType = {
   id: CategoryId,
   title: Text,
   description: Text,
-  created_at: BlockchainTimestamp,
+  created_at: BlockAndTime,
   deleted: bool,
   archived: bool,
   num_direct_subcategories: u32,
@@ -170,7 +143,7 @@ export class Category extends JoyStruct<CategoryType> {
       id: CategoryId,
       title: Text,
       description: Text,
-      created_at: BlockchainTimestamp,
+      created_at: BlockAndTime,
       deleted: bool,
       archived: bool,
       num_direct_subcategories: u32,
@@ -197,7 +170,7 @@ export class Category extends JoyStruct<CategoryType> {
     return this.getString('description');
   }
 
-  get created_at (): BlockchainTimestamp {
+  get created_at (): BlockAndTime {
     return this.getField('created_at');
   }
 
@@ -264,7 +237,7 @@ export type ThreadType = {
   moderation: OptionModerationAction,
   num_unmoderated_posts: u32,
   num_moderated_posts: u32,
-  created_at: BlockchainTimestamp,
+  created_at: BlockAndTime,
   author_id: AccountId
 };
 
@@ -278,7 +251,7 @@ export class Thread extends JoyStruct<ThreadType> {
       moderation: OptionModerationAction,
       num_unmoderated_posts: u32,
       num_moderated_posts: u32,
-      created_at: BlockchainTimestamp,
+      created_at: BlockAndTime,
       author_id: GenericAccountId
     }, value);
   }
@@ -323,7 +296,7 @@ export class Thread extends JoyStruct<ThreadType> {
     return new u32(this.num_unmoderated_posts.add(this.num_moderated_posts));
   }
 
-  get created_at (): BlockchainTimestamp {
+  get created_at (): BlockAndTime {
     return this.getField('created_at');
   }
 
@@ -339,7 +312,7 @@ export type PostType = {
   current_text: Text,
   moderation: OptionModerationAction,
   text_change_history: VecPostTextChange,
-  created_at: BlockchainTimestamp,
+  created_at: BlockAndTime,
   author_id: AccountId
 };
 
@@ -353,7 +326,7 @@ export class Post extends JoyStruct<PostType> {
       current_text: Text,
       moderation: OptionModerationAction,
       text_change_history: VecPostTextChange,
-      created_at: BlockchainTimestamp,
+      created_at: BlockAndTime,
       author_id: GenericAccountId
     }, value);
   }
@@ -390,7 +363,7 @@ export class Post extends JoyStruct<PostType> {
     return this.getField('text_change_history');
   }
 
-  get created_at (): BlockchainTimestamp {
+  get created_at (): BlockAndTime {
     return this.getField('created_at');
   }
 
@@ -441,7 +414,6 @@ export class Reply extends JoyStruct<ReplyType> {
 export function registerForumTypes () {
   try {
     getTypeRegistry().register({
-      BlockchainTimestamp,
       PostTextChange,
       ModerationAction,
       InputValidationLengthConstraint,

+ 4 - 0
types/src/media.ts

@@ -51,6 +51,10 @@ export class BlockAndTime extends Struct {
   get time (): Moment {
     return this.get('time') as Moment;
   }
+
+  static newEmpty (): BlockAndTime {
+    return new BlockAndTime({} as BlockAndTime);
+  }
 }
 
 // TODO rename to Draft to Unlisted