From 467c6235a21b4b5a4e51f72eeaee5af6f00e3f8e Mon Sep 17 00:00:00 2001 From: Lezek123 Date: Wed, 23 Mar 2022 20:16:58 +0100 Subject: [PATCH] Add Joystream testnet (Olympia) (#7134) * Add Joystream testnet * Fix ValidatorPrefs * Update types and temporary endpoint * Joystream: Update testnet endpoint * Trigger GH actions --- .123trigger | 2 +- packages/apps-config/src/api/spec/index.ts | 2 + .../apps-config/src/api/spec/joystream.ts | 867 ++++++++++++++++++ packages/apps-config/src/endpoints/testing.ts | 7 + packages/apps-config/src/ui/colors.ts | 2 + packages/apps-config/src/ui/logos/index.ts | 3 + .../src/ui/logos/nodes/joystream.svg | 1 + .../apps/public/locales/en/apps-config.json | 1 + 8 files changed, 884 insertions(+), 1 deletion(-) create mode 100644 packages/apps-config/src/api/spec/joystream.ts create mode 100755 packages/apps-config/src/ui/logos/nodes/joystream.svg diff --git a/.123trigger b/.123trigger index 41ba2e40b1..214bc44682 100644 --- a/.123trigger +++ b/.123trigger @@ -1,4 +1,4 @@ -26 +27 0.45.2 diff --git a/packages/apps-config/src/api/spec/index.ts b/packages/apps-config/src/api/spec/index.ts index 9029b2142f..fb9aa277f8 100644 --- a/packages/apps-config/src/api/spec/index.ts +++ b/packages/apps-config/src/api/spec/index.ts @@ -54,6 +54,7 @@ import idavoll from './idavoll'; import integritee from './integritee'; import interbtc from './interbtc'; import ipse from './ipse'; +import joystream from './joystream'; import jupiter from './jupiter'; import jupiterRococo from './jupiter-rococo'; import khala from './khala'; @@ -190,6 +191,7 @@ const spec: Record = { 'interbtc-parachain': interbtc, 'interbtc-standalone': interbtc, 'ipse-node': ipse, + 'joystream-node': joystream, 'jupiter-prep': jupiter, 'jupiter-rococo': jupiterRococo, kerria: parallel, diff --git a/packages/apps-config/src/api/spec/joystream.ts b/packages/apps-config/src/api/spec/joystream.ts new file mode 100644 index 0000000000..6d14d53ea2 --- /dev/null +++ b/packages/apps-config/src/api/spec/joystream.ts @@ -0,0 +1,867 @@ +// Copyright 2017-2022 @polkadot/apps-config authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { OverrideBundleDefinition } from '@polkadot/types/types'; + +// structs need to be in order +/* eslint-disable sort-keys */ + +const definitions: OverrideBundleDefinition = { + types: [ + { + // on all versions + minmax: [0, undefined], + types: { + ActorId: 'u64', + MemberId: 'u64', + BlockAndTime: { + block: 'u32', + time: 'u64' + }, + ThreadId: 'u64', + PostId: 'u64', + InputValidationLengthConstraint: { + min: 'u16', + max_min_diff: 'u16' + }, + WorkingGroup: { + _enum: [ + 'Forum', + 'Storage', + 'Content', + 'OperationsAlpha', + 'Gateway', + 'Distribution', + 'OperationsBeta', + 'OperationsGamma', + 'Membership' + ] + }, + BalanceKind: { + _enum: [ + 'Positive', + 'Negative' + ] + }, + Address: 'AccountId', + LookupSource: 'AccountId', + ChannelId: 'u64', + Url: 'Text', + Membership: { + handle_hash: 'Bytes', + root_account: 'AccountId', + controller_account: 'AccountId', + verified: 'bool', + invites: 'u32' + }, + StakingAccountMemberBinding: { + member_id: 'MemberId', + confirmed: 'bool' + }, + BuyMembershipParameters: { + root_account: 'AccountId', + controller_account: 'AccountId', + handle: 'Option', + metadata: 'Bytes', + referrer_id: 'Option' + }, + InviteMembershipParameters: { + inviting_member_id: 'MemberId', + root_account: 'AccountId', + controller_account: 'AccountId', + handle: 'Option', + metadata: 'Bytes' + }, + CouncilStageAnnouncing: { + candidatesCount: 'u64' + }, + CouncilStageElection: { + candidatesCount: 'u64' + }, + CouncilStageUpdate: { + stage: 'CouncilStage', + changed_at: 'u32' + }, + CouncilStage: { + _enum: { + Announcing: 'CouncilStageAnnouncing', + Election: 'CouncilStageElection', + Idle: 'Null' + } + }, + Candidate: { + staking_account_id: 'AccountId', + reward_account_id: 'AccountId', + cycle_id: 'u64', + stake: 'u32', + vote_power: 'VotePower', + note_hash: 'Option' + }, + CouncilMemberOf: { + staking_account_id: 'AccountId', + reward_account_id: 'AccountId', + membership_id: 'MemberId', + stake: 'u128', + last_payment_block: 'u32', + unpaid_reward: 'u128' + }, + CastVoteOf: { + commitment: 'Hash', + cycle_id: 'u64', + stake: 'u128', + vote_for: 'Option' + }, + ForumUserId: 'u64', + ModeratorId: 'u64', + CategoryId: 'u64', + PostReactionId: 'u64', + Category: { + title_hash: 'Hash', + description_hash: 'Hash', + archived: 'bool', + num_direct_subcategories: 'u32', + num_direct_threads: 'u32', + num_direct_moderators: 'u32', + parent_category_id: 'Option', + sticky_thread_ids: 'Vec' + }, + Thread: { + category_id: 'CategoryId', + author_id: 'ForumUserId', + poll: 'Option', + cleanup_pay_off: 'u128', + number_of_posts: 'u64' + }, + Post: { + thread_id: 'ThreadId', + text_hash: 'Hash', + author_id: 'ForumUserId', + cleanup_pay_off: 'u128', + last_edited: 'u32' + }, + PollAlternative: { + alternative_text_hash: 'Hash', + vote_count: 'u32' + }, + Poll: { + description_hash: 'Hash', + end_time: 'u64', + poll_alternatives: 'Vec' + }, + PrivilegedActor: { + _enum: { + Lead: 'Null', + Moderator: 'ModeratorId' + } + }, + PollInput: { + description: 'Bytes', + end_time: 'u64', + poll_alternatives: 'Vec' + }, + ThreadOf: { + category_id: 'CategoryId', + author_id: 'ForumUserId', + poll: 'Option', + cleanup_pay_off: 'u128', + number_of_posts: 'u64' + }, + ExtendedPostId: { + category_id: 'CategoryId', + thread_id: 'ThreadId', + post_id: 'PostId' + }, + ApplicationId: 'u64', + Application: { + role_account_id: 'AccountId', + reward_account_id: 'AccountId', + staking_account_id: 'AccountId', + member_id: 'MemberId', + description_hash: 'Bytes', + opening_id: 'OpeningId' + }, + ApplicationInfo: { + application_id: 'ApplicationId', + application: 'Application' + }, + ApplicationIdSet: 'BTreeSet', + ApplicationIdToWorkerIdMap: 'BTreeMap', + WorkerId: 'u64', + Worker: { + member_id: 'MemberId', + role_account_id: 'AccountId', + staking_account_id: 'AccountId', + reward_account_id: 'AccountId', + started_leaving_at: 'Option', + job_unstaking_period: 'u32', + reward_per_block: 'Option', + missed_reward: 'Option', + created_at: 'u32' + }, + WorkerInfo: { + worker_id: 'WorkerId', + worker: 'Worker' + }, + Opening: { + opening_type: 'OpeningType', + created: 'u32', + description_hash: 'Bytes', + stake_policy: 'StakePolicy', + reward_per_block: 'Option', + creation_stake: 'u128' + }, + OpeningId: 'u64', + StakePolicy: { + stake_amount: 'u128', + leaving_unstaking_period: 'u32' + }, + StakeParameters: { + stake: 'u128', + staking_account_id: 'AccountId' + }, + StorageProviderId: 'u64', + OpeningType: { + _enum: { + Leader: 'Null', + Regular: 'Null' + } + }, + ApplyOnOpeningParameters: { + member_id: 'MemberId', + opening_id: 'OpeningId', + role_account_id: 'AccountId', + reward_account_id: 'AccountId', + description: 'Bytes', + stake_parameters: 'StakeParameters' + }, + Penalty: { + slashing_text: 'Text', + slashing_amount: 'u128' + }, + RewardPaymentType: { + _enum: [ + 'MissedReward', + 'RegularReward' + ] + }, + StorageBucketId: 'u64', + StorageBucketsPerBagValueConstraint: { + min: 'u64', + max_min_diff: 'u64' + }, + DataObjectId: 'u64', + DynamicBagId: { + _enum: { + Member: 'MemberId', + Channel: 'u64' + } + }, + Voucher: { + sizeLimit: 'u64', + objectsLimit: 'u64', + sizeUsed: 'u64', + objectsUsed: 'u64' + }, + DynamicBagType: { + _enum: [ + 'Member', + 'Channel' + ] + }, + DynamicBagCreationPolicy: { + numberOfStorageBuckets: 'u64', + families: 'BTreeMap' + }, + DynamicBagDeletionPrize: { + account_id: 'GenericAccountId', + prize: 'u128' + }, + DynamicBagDeletionPrizeRecord: { + account_id: 'GenericAccountId', + prize: 'u128' + }, + Bag: { + stored_by: 'BTreeSet', + distributed_by: 'BTreeSet', + deletion_prize: 'Option', + objects_total_size: 'u64', + objects_number: 'u64' + }, + StorageBucket: { + operator_status: 'StorageBucketOperatorStatus', + accepting_new_bags: 'bool', + voucher: 'Voucher', + assigned_bags: 'u64' + }, + StaticBagId: { + _enum: { + Council: 'Null', + WorkingGroup: 'WorkingGroup' + } + }, + Static: { + _enum: { + Council: 'Null', + WorkingGroup: 'WorkingGroup' + } + }, + Dynamic: { + _enum: { + Member: 'MemberId', + Channel: 'u64' + } + }, + BagId: { + _enum: { + Static: 'Static', + Dynamic: 'Dynamic' + } + }, + DataObjectCreationParameters: { + size: 'u64', + ipfsContentId: 'Bytes' + }, + BagIdType: { + _enum: { + Static: 'Static', + Dynamic: 'Dynamic' + } + }, + UploadParameters: { + bagId: 'BagId', + objectCreationList: 'Vec', + deletionPrizeSourceAccountId: 'GenericAccountId', + expectedDataSizeFee: 'u128' + }, + StorageBucketIdSet: 'BTreeSet', + DataObjectIdSet: 'BTreeSet', + ContentIdSet: 'BTreeSet', + Cid: 'Bytes', + StorageBucketOperatorStatus: { + _enum: { + Missing: 'Null', + InvitedStorageWorker: 'WorkerId', + StorageWorker: '(WorkerId,GenericAccountId)' + } + }, + DataObject: { + accepted: 'bool', + deletion_prize: 'u128', + size: 'u64', + ipfsContentId: 'Bytes' + }, + DistributionBucketId: { + distribution_bucket_family_id: 'DistributionBucketFamilyId', + distribution_bucket_index: 'DistributionBucketIndex' + }, + DistributionBucketIndex: 'u64', + DistributionBucketFamilyId: 'u64', + DistributionBucket: { + accepting_new_bags: 'bool', + distributing: 'bool', + pending_invitations: 'BTreeSet', + operators: 'BTreeSet', + assigned_bags: 'u64' + }, + DistributionBucketFamily: { + next_distribution_bucket_index: 'DistributionBucketIndex' + }, + DataObjectIdMap: 'BTreeMap', + DistributionBucketIndexSet: 'BTreeSet', + DynamicBagCreationPolicyDistributorFamiliesMap: 'BTreeMap', + ParticipantId: 'u64', + Title: 'Text', + UpdatedTitle: 'Option', + UpdatedBody: 'Option', + ReplyId: 'u64', + Reply: { + text_hash: 'Hash', + owner: 'ParticipantId', + parent_id: 'PostId' + }, + ReplyToDelete: { + post_id: 'PostId', + reply_id: 'ReplyId', + hide: 'bool' + }, + ProposalId: 'u32', + ProposalStatus: { + _enum: { + Active: 'Null', + PendingExecution: 'u32', + PendingConstitutionality: 'Null' + } + }, + ProposalOf: { + parameters: 'ProposalParameters', + proposerId: 'MemberId', + activatedAt: 'u32', + status: 'ProposalStatus', + votingResults: 'VotingResults', + exactExecutionBlock: 'Option', + nrOfCouncilConfirmations: 'u32', + stakingAccountId: 'Option' + }, + ProposalDetails: { + _enum: { + Signal: 'Text', + RuntimeUpgrade: 'Bytes', + FundingRequest: 'Vec', + SetMaxValidatorCount: 'u32', + CreateWorkingGroupLeadOpening: 'CreateOpeningParameters', + FillWorkingGroupLeadOpening: 'FillOpeningParameters', + UpdateWorkingGroupBudget: '(Balance,WorkingGroup,BalanceKind)', + DecreaseWorkingGroupLeadStake: '(WorkerId,Balance,WorkingGroup)', + SlashWorkingGroupLead: '(WorkerId,Balance,WorkingGroup)', + SetWorkingGroupLeadReward: '(WorkerId,Option,WorkingGroup)', + TerminateWorkingGroupLead: 'TerminateRoleParameters', + AmendConstitution: 'Text', + CancelWorkingGroupLeadOpening: '(OpeningId,WorkingGroup)', + SetMembershipPrice: 'u128', + SetCouncilBudgetIncrement: 'u128', + SetCouncilorReward: 'u128', + SetInitialInvitationBalance: 'u128', + SetInitialInvitationCount: 'u32', + SetMembershipLeadInvitationQuota: 'u32', + SetReferralCut: 'u8', + CreateBlogPost: '(Text,Text)', + EditBlogPost: '(PostId,Option,Option)', + LockBlogPost: 'PostId', + UnlockBlogPost: 'PostId', + VetoProposal: 'ProposalId' + } + }, + ProposalDetailsOf: { + _enum: { + Signal: 'Text', + RuntimeUpgrade: 'Bytes', + FundingRequest: 'Vec', + SetMaxValidatorCount: 'u32', + CreateWorkingGroupLeadOpening: 'CreateOpeningParameters', + FillWorkingGroupLeadOpening: 'FillOpeningParameters', + UpdateWorkingGroupBudget: '(Balance,WorkingGroup,BalanceKind)', + DecreaseWorkingGroupLeadStake: '(WorkerId,Balance,WorkingGroup)', + SlashWorkingGroupLead: '(WorkerId,Balance,WorkingGroup)', + SetWorkingGroupLeadReward: '(WorkerId,Option,WorkingGroup)', + TerminateWorkingGroupLead: 'TerminateRoleParameters', + AmendConstitution: 'Text', + CancelWorkingGroupLeadOpening: '(OpeningId,WorkingGroup)', + SetMembershipPrice: 'u128', + SetCouncilBudgetIncrement: 'u128', + SetCouncilorReward: 'u128', + SetInitialInvitationBalance: 'u128', + SetInitialInvitationCount: 'u32', + SetMembershipLeadInvitationQuota: 'u32', + SetReferralCut: 'u8', + CreateBlogPost: '(Text,Text)', + EditBlogPost: '(PostId,Option,Option)', + LockBlogPost: 'PostId', + UnlockBlogPost: 'PostId', + VetoProposal: 'ProposalId' + } + }, + VotingResults: { + abstensions: 'u32', + approvals: 'u32', + rejections: 'u32', + slashes: 'u32' + }, + ProposalParameters: { + votingPeriod: 'u32', + gracePeriod: 'u32', + approvalQuorumPercentage: 'u32', + approvalThresholdPercentage: 'u32', + slashingQuorumPercentage: 'u32', + slashingThresholdPercentage: 'u32', + requiredStake: 'Option', + constitutionality: 'u32' + }, + GeneralProposalParameters: { + member_id: 'MemberId', + title: 'Text', + description: 'Text', + staking_account_id: 'Option', + exact_execution_block: 'Option' + }, + VoteKind: { + _enum: [ + 'Approve', + 'Reject', + 'Slash', + 'Abstain' + ] + }, + DiscussionThread: { + activated_at: 'u32', + author_id: 'u64', + mode: 'ThreadMode' + }, + DiscussionPost: { + author_id: 'u64' + }, + CreateOpeningParameters: { + description: 'Bytes', + stake_policy: 'StakePolicy', + reward_per_block: 'Option', + working_group: 'WorkingGroup' + }, + FillOpeningParameters: { + opening_id: 'OpeningId', + successful_application_id: 'ApplicationId', + working_group: 'WorkingGroup' + }, + TerminateRoleParameters: { + worker_id: 'WorkerId', + slashing_amount: 'Option', + working_group: 'WorkingGroup' + }, + ProposalDecision: { + _enum: { + Canceled: 'Null', + CanceledByRuntime: 'Null', + Vetoed: 'Null', + Rejected: 'Null', + Slashed: 'Null', + Expired: 'Null', + Approved: 'Approved' + } + }, + ExecutionFailed: { + error: 'Text' + }, + Approved: { + _enum: [ + 'PendingExecution', + 'PendingConstitutionality' + ] + }, + SetLeadParams: '(MemberId,AccountId)', + ThreadMode: { + _enum: { + Open: 'Null', + Closed: 'Vec' + } + }, + ExecutionStatus: { + _enum: { + Executed: 'Null', + ExecutionFailed: 'ExecutionFailed' + } + }, + FundingRequestParameters: { + account: 'AccountId', + amount: 'u128' + }, + ReferendumStageVoting: { + started: 'u32', + winning_target_count: 'u64', + current_cycle_id: 'u64' + }, + ReferendumStageRevealing: { + started: 'u32', + winning_target_count: 'u64', + intermediate_winners: 'Vec', + current_cycle_id: 'u64' + }, + ReferendumStage: { + _enum: { + Inactive: 'Null', + Voting: 'ReferendumStageVoting', + Revealing: 'ReferendumStageRevealing' + } + }, + OptionResult: { + option_id: 'MemberId', + vote_power: 'VotePower' + }, + VotePower: 'u128', + ConstitutionInfo: { + text_hash: 'Hash' + }, + BountyId: 'u64', + EntryId: 'u64', + BountyActor: { + _enum: { + Council: 'Null', + Member: 'MemberId' + } + }, + AssuranceContractType_Closed: 'BTreeSet', + AssuranceContractType: { + _enum: { + Open: 'Null', + Closed: 'AssuranceContractType_Closed' + } + }, + FundingType_Limited: { + min_funding_amount: 'u128', + max_funding_amount: 'u128', + funding_period: 'u32' + }, + FundingType_Perpetual: { + target: 'u128' + }, + FundingType: { + _enum: { + Perpetual: 'FundingType_Perpetual', + Limited: 'FundingType_Limited' + } + }, + BountyCreationParameters: { + oracle: 'BountyActor', + contract_type: 'AssuranceContractType', + creator: 'BountyActor', + cherry: 'u128', + entrant_stake: 'u128', + funding_type: 'FundingType', + work_period: 'u32', + judging_period: 'u32' + }, + OracleWorkEntryJudgment_Winner: { + reward: 'u128' + }, + OracleWorkEntryJudgment: { + _enum: { + Winner: 'OracleWorkEntryJudgment_Winner', + Rejected: 'Null' + } + }, + OracleJudgment: 'BTreeMap', + Entry: { + member_id: 'MemberId', + staking_account_id: 'AccountId', + submitted_at: 'u32', + work_submitted: 'bool', + oracle_judgment_result: 'Option' + }, + BountyMilestone_Created: { + created_at: 'u32', + has_contributions: 'bool' + }, + BountyMilestone_BountyMaxFundingReached: { + max_funding_reached_at: 'u32' + }, + BountyMilestone_WorkSubmitted: { + work_period_started_at: 'u32' + }, + BountyMilestone_JudgmentSubmitted: { + successful_bounty: 'bool' + }, + BountyMilestone: { + _enum: { + Created: 'BountyMilestone_Created', + BountyMaxFundingReached: 'BountyMilestone_BountyMaxFundingReached', + WorkSubmitted: 'BountyMilestone_WorkSubmitted', + JudgmentSubmitted: 'BountyMilestone_JudgmentSubmitted' + } + }, + Bounty: { + creation_params: 'BountyCreationParameters', + total_funding: 'u128', + milestone: 'BountyMilestone', + active_work_entry_count: 'u32' + }, + CuratorId: 'u64', + CuratorGroupId: 'u64', + CuratorGroup: { + curators: 'BTreeSet', + active: 'bool' + }, + ContentActor: { + _enum: { + Curator: '(CuratorGroupId,CuratorId)', + Member: 'MemberId', + Lead: 'Null' + } + }, + StorageAssets: { + object_creation_list: 'Vec', + expected_data_size_fee: 'u128' + }, + Channel: { + owner: 'ChannelOwner', + num_videos: 'u64', + is_censored: 'bool', + reward_account: 'Option', + collaborators: 'BTreeSet', + moderators: 'BTreeSet', + cumulative_payout_earned: 'u128' + }, + ChannelOwner: { + _enum: { + Member: 'MemberId', + Curators: 'CuratorGroupId' + } + }, + ChannelCategoryId: 'u64', + ChannelCategory: {}, + ChannelCategoryCreationParameters: { + meta: 'Bytes' + }, + ChannelCategoryUpdateParameters: { + new_meta: 'Bytes' + }, + ChannelCreationParameters: { + assets: 'Option', + meta: 'Option', + reward_account: 'Option', + collaborators: 'BTreeSet', + moderators: 'BTreeSet' + }, + ChannelUpdateParameters: { + assets_to_upload: 'Option', + new_meta: 'Option', + reward_account: 'Option>', + assets_to_remove: 'BTreeSet', + collaborators: 'Option>' + }, + Video: { + in_channel: 'ChannelId', + is_censored: 'bool', + enable_comments: 'bool', + video_post_id: 'Option', + nft_status: 'Option' + }, + VideoId: 'u64', + VideoCategoryId: 'u64', + VideoCategory: {}, + VideoCategoryCreationParameters: { + meta: 'Bytes' + }, + VideoCategoryUpdateParameters: { + new_meta: 'Bytes' + }, + VideoCreationParameters: { + assets: 'Option', + meta: 'Option', + enable_comments: 'bool', + auto_issue_nft: 'Option' + }, + VideoUpdateParameters: { + assets_to_upload: 'Option', + new_meta: 'Option', + assets_to_remove: 'BTreeSet', + enable_comments: 'Option' + }, + MaxNumber: 'u32', + IsCensored: 'bool', + VideoPostId: 'u64', + ReactionId: 'u64', + VideoPostType: { + _enum: { + Description: 'Null', + Comment: 'VideoPostId' + } + }, + VideoPost: { + author: 'ContentActor', + bloat_bond: 'u128', + replies_count: 'VideoPostId', + post_type: 'VideoPostType', + video_reference: 'VideoId' + }, + Side: { + _enum: [ + 'Left', + 'Right' + ] + }, + ProofElement: { + hash: 'Hash', + side: 'Side' + }, + VideoPostCreationParameters: { + post_type: 'VideoPostType', + video_reference: 'VideoId' + }, + VideoPostDeletionParameters: { + witness: 'Option', + rationale: 'Option' + }, + PullPayment: { + channel_id: 'ChannelId', + cumulative_payout_claimed: 'u128', + reason: 'Hash' + }, + ModeratorSet: 'BTreeSet', + Royalty: 'u64', + IsExtended: 'bool', + EnglishAuctionDetails: { + extension_period: 'u32', + auction_duration: 'u32' + }, + OpenAuctionDetails: { + bid_lock_duration: 'u32' + }, + AuctionType: { + _enum: { + English: 'EnglishAuctionDetails', + Open: 'OpenAuctionDetails' + } + }, + Bid: { + bidder: 'MemberId', + bidder_account_id: 'GenericAccountId', + amount: 'u128', + made_at_block: 'u32' + }, + Auction: { + starting_price: 'u128', + buy_now_price: 'Option', + auction_type: 'AuctionType', + minimal_bid_step: 'u128', + last_bid: 'Option', + starts_at: 'u32', + whitelist: 'BTreeSet' + }, + TransactionalStatus: { + _enum: { + Idle: 'Null', + InitiatedOfferToMember: '(MemberId,Option)', + Auction: 'Auction', + BuyNow: 'u128' + } + }, + NftOwner: { + _enum: { + ChannelOwner: 'Null', + Member: 'MemberId' + } + }, + OwnedNft: { + owner: 'NftOwner', + transactional_status: 'TransactionalStatus', + creator_royalty: 'Option' + }, + AuctionParams: { + auction_type: 'AuctionType', + starting_price: 'u128', + minimal_bid_step: 'u128', + buy_now_price: 'Option', + starts_at: 'Option', + whitelist: 'BTreeSet' + }, + CurrencyOf: 'u128', + CurrencyAmount: 'u128', + InitTransactionalStatus: { + _enum: { + Idle: 'Null', + InitiatedOfferToMember: '(MemberId,Option)', + Auction: 'AuctionParams' + } + }, + NftIssuanceParameters: { + royalty: 'Option', + nft_metadata: 'Bytes', + non_channel_owner: 'Option', + init_transactional_status: 'InitTransactionalStatus' + }, + NftMetadata: 'Vec', + AccountInfo: 'AccountInfoWithRefCount', + ValidatorPrefs: 'ValidatorPrefsWithCommission' + } + } + ] +}; + +export default definitions; diff --git a/packages/apps-config/src/endpoints/testing.ts b/packages/apps-config/src/endpoints/testing.ts index 2485b9273d..b9321f708e 100644 --- a/packages/apps-config/src/endpoints/testing.ts +++ b/packages/apps-config/src/endpoints/testing.ts @@ -224,6 +224,13 @@ export function createTesting (t: TFunction, firstOnly: boolean, withSort: boole 'IPSE Europe': 'wss://testnet-europe.ipse.io' } }, + { + info: 'joystream', + text: t('rpc.test.joystream', 'Joystream', { ns: 'apps-config' }), + providers: { + Jsgenesis: 'wss://rpc.joystream.org:9944' + } + }, { info: 'jupiter', text: t('rpc.test.jupiter', 'Jupiter', { ns: 'apps-config' }), diff --git a/packages/apps-config/src/ui/colors.ts b/packages/apps-config/src/ui/colors.ts index 5cd039f10f..ca5e1fe4d0 100644 --- a/packages/apps-config/src/ui/colors.ts +++ b/packages/apps-config/src/ui/colors.ts @@ -159,6 +159,7 @@ const nodeGeek = '#4f46e5'; const nodeHeiko = '#42d5de'; const nodeIntegritee = '#658ea9'; const nodeIpse = '#08a1e8'; +const nodeJoystream = '#4038FF'; const nodeJupiter = '#7143ff'; const nodeKonomi = '#007aff'; const nodeKpron = 'linear-gradient(45deg, #0099F7 0%, #2E49EB 100%)'; @@ -441,6 +442,7 @@ export const nodeColors = Object.entries({ 'Integritee Collator': nodeIntegritee, 'Integritee Node': nodeIntegritee, IpseTestnet: nodeIpse, + 'Joystream Node': nodeJoystream, KICO: chainKico, 'Klug Dossier Node': nodeKlug, 'Konomi Collator': nodeKonomi, diff --git a/packages/apps-config/src/ui/logos/index.ts b/packages/apps-config/src/ui/logos/index.ts index 5a458ef420..471e61de5d 100644 --- a/packages/apps-config/src/ui/logos/index.ts +++ b/packages/apps-config/src/ui/logos/index.ts @@ -100,6 +100,7 @@ import nodeIdavoll from './nodes/idavoll.png'; import nodeIntegritee from './nodes/integritee.svg'; import nodeInterBTC from './nodes/interlay.svg'; import nodeIpse from './nodes/ipse.png'; +import nodeJoystream from './nodes/joystream.svg'; import nodeJupiter from './nodes/jupiter.svg'; import nodeKhala from './nodes/khala.svg'; import nodeKilt from './nodes/kilt.png'; @@ -418,6 +419,7 @@ export const nodeLogos = Object.entries({ 'Integritee Node': nodeIntegritee, Interlay: chainInterlay, IpseTestnet: nodeIpse, + 'Joystream Node': nodeJoystream, Kerria: nodeParallel, 'Kerria Dev': nodeParallel, Khala: nodeKhala, @@ -610,6 +612,7 @@ export const namedLogos: Record = { interbtc: nodeInterBTC, interlay: chainInterlay, ipse: nodeIpse, + joystream: nodeJoystream, jupiter: nodeJupiter, karura: chainKarura, kerria: nodeParallel, diff --git a/packages/apps-config/src/ui/logos/nodes/joystream.svg b/packages/apps-config/src/ui/logos/nodes/joystream.svg new file mode 100755 index 0000000000..b57d0e2e8d --- /dev/null +++ b/packages/apps-config/src/ui/logos/nodes/joystream.svg @@ -0,0 +1 @@ +Icon-basic-1bg \ No newline at end of file diff --git a/packages/apps/public/locales/en/apps-config.json b/packages/apps/public/locales/en/apps-config.json index 66797303e1..7f873a6aaa 100644 --- a/packages/apps/public/locales/en/apps-config.json +++ b/packages/apps/public/locales/en/apps-config.json @@ -200,6 +200,7 @@ "rpc.test.halongbay": "Halongbay Testnet", "rpc.test.interbtc": "Interlay Testnet", "rpc.test.ipse": "IPSE", + "rpc.test.joystream": "Joystream", "rpc.test.jupiter": "Jupiter", "rpc.test.khala": "Khala (Para 3)", "rpc.test.kilt.mash": "KILT Mashnet",