Browse Source

Updated to use "JoyEnum"

Leszek Wiesner 4 years ago
parent
commit
92d98a22cf

+ 2 - 5
pioneer/packages/joy-roles/src/tabs/MyRoles.tsx

@@ -21,8 +21,6 @@ import { u128 } from '@polkadot/types';
 import { Balance } from '@polkadot/types/interfaces';
 
 import { Loadable } from '@polkadot/joy-utils/index';
-
-import { GenericJoyStreamRoleSchema } from '@joystream/types/hiring/schemas/role.schema.typings';
 import { Opening } from '@joystream/types/hiring';
 
 import {
@@ -35,7 +33,7 @@ import {
 import { CancelledReason, OpeningStageClassification, OpeningState } from '../classifiers';
 import { OpeningMetadata } from '../OpeningMetadata';
 import { CuratorId } from '@joystream/types/content-working-group';
-import { WorkerId, OpeningTypeKeys } from '@joystream/types/working-group';
+import { WorkerId } from '@joystream/types/working-group';
 import _ from 'lodash';
 import styled from 'styled-components';
 import { WorkingGroups } from '../working_groups';
@@ -397,8 +395,7 @@ export function Application (props: ApplicationProps) {
 
   const application = props.opening.parse_human_readable_text_with_fallback();
   const appState = applicationState(props);
-  // TODO: Use JoyEnum here
-  const isLeadApplication = props.meta.type?.type === OpeningTypeKeys.Leader;
+  const isLeadApplication = props.meta.type?.isOfType('Leader');
 
   let CTA = null;
   if (appState === ApplicationState.Positive && props.stage.state !== OpeningState.Complete) {

+ 2 - 5
pioneer/packages/joy-roles/src/tabs/Opportunities.tsx

@@ -42,7 +42,6 @@ import { Loadable } from '@polkadot/joy-utils/index';
 import styled from 'styled-components';
 import _ from 'lodash';
 import { WorkingGroups, AvailableGroups, workerRoleNameByGroup } from '../working_groups';
-import { OpeningTypeKeys } from '@joystream/types/working-group';
 
 type OpeningStage = OpeningMetadataProps & {
   stage: OpeningStageClassification;
@@ -478,8 +477,7 @@ export const OpeningView = Loadable<OpeningViewProps>(
   ['opening', 'block_time_in_seconds'],
   props => {
     const text = props.opening.parse_human_readable_text_with_fallback();
-    // TODO: This will be handled with JoyEnum later
-    const isLeadOpening = props.meta.type?.type === OpeningTypeKeys.Leader;
+    const isLeadOpening = props.meta.type?.isOfType('Leader');
 
     return (
       <Container className={'opening ' + openingClass(props.stage.state)}>
@@ -547,8 +545,7 @@ export const OpeningsView = Loadable<OpeningsViewProps>(
     // Can assert "props.openings!" because we're using "Loadable" which prevents them from beeing undefined
     const filteredOpenings = props.openings!.filter(o =>
       (!group || o.meta.group === group) &&
-      // TODO: Adjust to use JoyEnum later
-      (!group || !o.meta.type || (lead === (o.meta.type.type === OpeningTypeKeys.Leader)))
+      (!group || !o.meta.type || (lead === o.meta.type.isOfType('Leader')))
     );
 
     return (

+ 2 - 4
pioneer/packages/joy-roles/src/transport.substrate.ts

@@ -26,8 +26,7 @@ import {
   Application as WGApplication,
   Opening as WGOpening,
   Worker, WorkerId,
-  RoleStakeProfile,
-  OpeningTypeKeys
+  RoleStakeProfile
 } from '@joystream/types/working-group';
 
 import { Application, Opening, OpeningId, ApplicationId, ActiveApplicationStage } from '@joystream/types/hiring';
@@ -288,8 +287,7 @@ export class Transport extends TransportBase implements ITransport {
         opening.is_active &&
         (
           groupOpening instanceof WGOpening
-            // TODO: Use JoyEnum for that later
-            ? (lead === (groupOpening.opening_type.type === OpeningTypeKeys.Leader))
+            ? (lead === groupOpening.opening_type.isOfType('Leader'))
             : !lead // Lead opening are never available for content working group currently
         )
       ) {

+ 3 - 3
types/src/common.ts

@@ -1,10 +1,11 @@
-import { Struct, Option, Text, bool, Vec, u16, u32, u64, getTypeRegistry, Enum, Null } from "@polkadot/types";
+import { Struct, Option, Text, bool, Vec, u16, u32, u64, getTypeRegistry, Null } from "@polkadot/types";
 import { BlockNumber, Moment } from '@polkadot/types/interfaces';
 import { Codec } from "@polkadot/types/types";
 // we get 'moment' because it is a dependency of @polkadot/util, via @polkadot/keyring
 import moment from 'moment';
 import { JoyStruct } from './JoyStruct';
 export { JoyStruct } from './JoyStruct';
+import { JoyEnum } from './JoyEnum';
 export { JoyEnum } from './JoyEnum';
 
 // Treat a BTreeSet as a Vec since it is encoded in the same way
@@ -108,12 +109,11 @@ export class InputValidationLengthConstraint extends JoyStruct<InputValidationLe
     }
 }
 
-// TODO: Replace with JoyEnum
 export const WorkingGroupDef = {
   Storage: Null
 } as const;
 export type WorkingGroupKeys = keyof typeof WorkingGroupDef;
-export class WorkingGroup extends Enum.with(WorkingGroupDef) { };
+export class WorkingGroup extends JoyEnum(WorkingGroupDef) { };
 
 export function registerCommonTypes() {
     const typeRegistry = getTypeRegistry();

+ 7 - 11
types/src/working-group/index.ts

@@ -6,6 +6,7 @@ import { MemberId, ActorId } from '../members';
 import { RewardRelationshipId } from '../recurring-rewards';
 import { StakeId } from '../stake';
 import { ApplicationId, OpeningId, ApplicationRationingPolicy, StakingPolicy } from '../hiring';
+import { JoyEnum } from '../JoyEnum';
 
 export class RationaleText extends Bytes { };
 
@@ -248,17 +249,12 @@ export enum OpeningTypeKeys {
   Worker = 'Worker'
 };
 
-export class OpeningType extends Enum {
-  constructor (value?: any, index?: number) {
-    super(
-      {
-        Leader: Null,
-        Worker: Null
-      },
-      value, index
-    );
-  }
-};
+export class OpeningType_Leader extends Null { };
+export class OpeningType_Worker extends Null { };
+export class OpeningType extends JoyEnum({
+  Leader: OpeningType_Leader,
+  Worker: OpeningType_Worker
+} as const) { };
 
 export type IOpening = {
   hiring_opening_id: OpeningId,