@audius/sdk 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc +38 -0
- package/.prettierrc.js +1 -0
- package/.python-version +1 -0
- package/Dockerfile +15 -0
- package/README.md +3 -0
- package/babel.config.js +3 -0
- package/data-contracts/ABIs/AdminUpgradeabilityProxy.json +132 -0
- package/data-contracts/ABIs/BaseAdminUpgradeabilityProxy.json +113 -0
- package/data-contracts/ABIs/BaseUpgradeabilityProxy.json +22 -0
- package/data-contracts/ABIs/DiscoveryProviderFactory.json +189 -0
- package/data-contracts/ABIs/DiscoveryProviderFactoryInterface.json +61 -0
- package/data-contracts/ABIs/DiscoveryProviderStorage.json +205 -0
- package/data-contracts/ABIs/DiscoveryProviderStorageInterface.json +65 -0
- package/data-contracts/ABIs/ECDSA.json +4 -0
- package/data-contracts/ABIs/IPLDBlacklistFactory.json +168 -0
- package/data-contracts/ABIs/Initializable.json +4 -0
- package/data-contracts/ABIs/Migrations.json +67 -0
- package/data-contracts/ABIs/OpenZeppelinUpgradesAddress.json +4 -0
- package/data-contracts/ABIs/Ownable.json +79 -0
- package/data-contracts/ABIs/PlaylistFactory.json +669 -0
- package/data-contracts/ABIs/PlaylistFactoryInterface.json +42 -0
- package/data-contracts/ABIs/PlaylistStorage.json +250 -0
- package/data-contracts/ABIs/PlaylistStorageInterface.json +129 -0
- package/data-contracts/ABIs/Proxy.json +10 -0
- package/data-contracts/ABIs/Registry.json +240 -0
- package/data-contracts/ABIs/RegistryContract.json +102 -0
- package/data-contracts/ABIs/RegistryContractInterface.json +28 -0
- package/data-contracts/ABIs/RegistryInterface.json +66 -0
- package/data-contracts/ABIs/SigningLogic.json +43 -0
- package/data-contracts/ABIs/SigningLogicInitializable.json +46 -0
- package/data-contracts/ABIs/SocialFeatureFactory.json +460 -0
- package/data-contracts/ABIs/SocialFeatureStorage.json +225 -0
- package/data-contracts/ABIs/SocialFeatureStorageInterface.json +123 -0
- package/data-contracts/ABIs/TestContract.json +135 -0
- package/data-contracts/ABIs/TestContractInterface.json +19 -0
- package/data-contracts/ABIs/TestContractWithStorage.json +165 -0
- package/data-contracts/ABIs/TestContractWithStorageInterface.json +24 -0
- package/data-contracts/ABIs/TestStorage.json +144 -0
- package/data-contracts/ABIs/TestStorageInterface.json +42 -0
- package/data-contracts/ABIs/TestUserReplicaSetManager.json +432 -0
- package/data-contracts/ABIs/TrackFactory.json +391 -0
- package/data-contracts/ABIs/TrackFactoryInterface.json +73 -0
- package/data-contracts/ABIs/TrackStorage.json +223 -0
- package/data-contracts/ABIs/TrackStorageInterface.json +121 -0
- package/data-contracts/ABIs/UpgradeabilityProxy.json +37 -0
- package/data-contracts/ABIs/UserFactory.json +657 -0
- package/data-contracts/ABIs/UserFactoryInterface.json +65 -0
- package/data-contracts/ABIs/UserLibraryFactory.json +334 -0
- package/data-contracts/ABIs/UserReplicaSetManager.json +418 -0
- package/data-contracts/ABIs/UserStorage.json +233 -0
- package/data-contracts/ABIs/UserStorageInterface.json +93 -0
- package/data-contracts/signatureSchemas.ts +1236 -0
- package/dist/core.d.ts +446 -0
- package/dist/core.js +769 -0
- package/dist/core.js.map +1 -0
- package/dist/index.d.ts +689 -0
- package/dist/index.js +72850 -0
- package/dist/index.js.map +1 -0
- package/eth-contracts/ABIs/Address.json +4 -0
- package/eth-contracts/ABIs/AudiusAdminUpgradeabilityProxy.json +105 -0
- package/eth-contracts/ABIs/AudiusClaimDistributor.json +4968 -0
- package/eth-contracts/ABIs/AudiusToken.json +724 -0
- package/eth-contracts/ABIs/BaseUpgradeabilityProxy.json +23 -0
- package/eth-contracts/ABIs/Checkpointing.json +4 -0
- package/eth-contracts/ABIs/ClaimsManager.json +539 -0
- package/eth-contracts/ABIs/Context.json +11 -0
- package/eth-contracts/ABIs/DelegateManager.json +989 -0
- package/eth-contracts/ABIs/DelegateManagerV2.json +1049 -0
- package/eth-contracts/ABIs/DelegateManagerV2Bad.json +1049 -0
- package/eth-contracts/ABIs/ERC20.json +252 -0
- package/eth-contracts/ABIs/ERC20Burnable.json +287 -0
- package/eth-contracts/ABIs/ERC20Detailed.json +270 -0
- package/eth-contracts/ABIs/ERC20Mintable.json +364 -0
- package/eth-contracts/ABIs/ERC20Pausable.json +397 -0
- package/eth-contracts/ABIs/EthRewardsManager.json +174 -0
- package/eth-contracts/ABIs/Governance.json +938 -0
- package/eth-contracts/ABIs/GovernanceUpgraded.json +953 -0
- package/eth-contracts/ABIs/GovernanceV2.json +938 -0
- package/eth-contracts/ABIs/IERC20.json +200 -0
- package/eth-contracts/ABIs/Initializable.json +4 -0
- package/eth-contracts/ABIs/InitializableV2.json +14 -0
- package/eth-contracts/ABIs/Migrations.json +71 -0
- package/eth-contracts/ABIs/MinterRole.json +91 -0
- package/eth-contracts/ABIs/MockAccount.json +62 -0
- package/eth-contracts/ABIs/MockDelegateManager.json +55 -0
- package/eth-contracts/ABIs/MockStakingCaller.json +259 -0
- package/eth-contracts/ABIs/MockWormhole.json +106 -0
- package/eth-contracts/ABIs/OpenZeppelinUpgradesAddress.json +4 -0
- package/eth-contracts/ABIs/Ownable.json +93 -0
- package/eth-contracts/ABIs/Pausable.json +150 -0
- package/eth-contracts/ABIs/PauserRole.json +91 -0
- package/eth-contracts/ABIs/Proxy.json +10 -0
- package/eth-contracts/ABIs/Registry.json +288 -0
- package/eth-contracts/ABIs/Roles.json +4 -0
- package/eth-contracts/ABIs/SafeERC20.json +4 -0
- package/eth-contracts/ABIs/SafeMath.json +4 -0
- package/eth-contracts/ABIs/ServiceProviderFactory.json +1153 -0
- package/eth-contracts/ABIs/ServiceTypeManager.json +337 -0
- package/eth-contracts/ABIs/Staking.json +555 -0
- package/eth-contracts/ABIs/StakingUpgraded.json +570 -0
- package/eth-contracts/ABIs/TestContract.json +44 -0
- package/eth-contracts/ABIs/TrustedNotifierManager.json +265 -0
- package/eth-contracts/ABIs/Uint256Helpers.json +4 -0
- package/eth-contracts/ABIs/UpgradeabilityProxy.json +40 -0
- package/eth-contracts/ABIs/Wormhole.json +45 -0
- package/eth-contracts/ABIs/WormholeClient.json +155 -0
- package/examples/file.mp3 +0 -0
- package/examples/initAudiusLibs.js +86 -0
- package/examples/initializeVersions.js +95 -0
- package/examples/pic.jpg +0 -0
- package/initScripts/configureLocalDiscProv.js +167 -0
- package/initScripts/helpers/claim.js +43 -0
- package/initScripts/helpers/distributeTokens.js +24 -0
- package/initScripts/helpers/spRegistration.js +138 -0
- package/initScripts/helpers/utils.js +34 -0
- package/initScripts/helpers/version.js +93 -0
- package/initScripts/local.js +617 -0
- package/initScripts/mainnet.js +131 -0
- package/initScripts/manageProdRelayerWallets.js +191 -0
- package/package.json +125 -0
- package/rollup.config.js +164 -0
- package/scripts/AudiusClaimDistributor.json +4968 -0
- package/scripts/Wormhole.json +155 -0
- package/scripts/addCIDToIpldBlacklist.js +124 -0
- package/scripts/circleci-test.sh +53 -0
- package/scripts/communityRewards/transferCommunityRewardsToSolana.js +222 -0
- package/scripts/ipfs.sh +58 -0
- package/scripts/migrate_contracts.sh +25 -0
- package/scripts/reset.sh +65 -0
- package/scripts/test.sh +77 -0
- package/src/api/account.js +670 -0
- package/src/api/base.js +122 -0
- package/src/api/file.js +168 -0
- package/src/api/playlist.js +328 -0
- package/src/api/rewards.d.ts +4 -0
- package/src/api/rewards.js +682 -0
- package/src/api/serviceProvider.js +154 -0
- package/src/api/track.js +604 -0
- package/src/api/user.js +888 -0
- package/src/api/user.test.js +172 -0
- package/src/constants.ts +7 -0
- package/src/core.ts +3 -0
- package/src/index.js +6 -0
- package/src/libs.d.ts +3 -0
- package/src/libs.js +619 -0
- package/src/sanityChecks/addSecondaries.js +40 -0
- package/src/sanityChecks/assignReplicaSetIfNecessary.js +10 -0
- package/src/sanityChecks/index.d.ts +9 -0
- package/src/sanityChecks/index.js +31 -0
- package/src/sanityChecks/isCreator.js +73 -0
- package/src/sanityChecks/needsRecoveryEmail.js +20 -0
- package/src/sanityChecks/rolloverNodes.js +74 -0
- package/src/sanityChecks/sanitizeNodes.js +24 -0
- package/src/sanityChecks/syncNodes.js +28 -0
- package/src/sdk/constants.ts +10 -0
- package/src/sdk/index.ts +1 -0
- package/src/sdk/oauth/Oauth.ts +265 -0
- package/src/sdk/oauth/index.ts +1 -0
- package/src/sdk/sdk.ts +102 -0
- package/src/service-selection/ServiceSelection.test.ts +320 -0
- package/src/service-selection/ServiceSelection.ts +460 -0
- package/src/service-selection/constants.ts +14 -0
- package/src/service-selection/index.ts +1 -0
- package/src/services/ABIDecoder/AudiusABIDecoder.ts +71 -0
- package/src/services/ABIDecoder/index.ts +1 -0
- package/src/services/comstock/Comstock.ts +39 -0
- package/src/services/comstock/index.ts +1 -0
- package/src/services/contracts/ContractClient.ts +227 -0
- package/src/services/contracts/GovernedContractClient.ts +53 -0
- package/src/services/contracts/ProviderSelection.ts +42 -0
- package/src/services/creatorNode/CreatorNode.ts +1065 -0
- package/src/services/creatorNode/CreatorNodeSelection.test.ts +997 -0
- package/src/services/creatorNode/CreatorNodeSelection.ts +488 -0
- package/src/services/creatorNode/constants.ts +10 -0
- package/src/services/creatorNode/index.ts +2 -0
- package/src/services/dataContracts/AudiusContracts.ts +234 -0
- package/src/services/dataContracts/IPLDBlacklistFactoryClient.ts +73 -0
- package/src/services/dataContracts/PlaylistFactoryClient.ts +370 -0
- package/src/services/dataContracts/RegistryClient.ts +95 -0
- package/src/services/dataContracts/SocialFeatureFactoryClient.ts +196 -0
- package/src/services/dataContracts/TrackFactoryClient.ts +131 -0
- package/src/services/dataContracts/UserFactoryClient.ts +351 -0
- package/src/services/dataContracts/UserLibraryFactoryClient.ts +115 -0
- package/src/services/dataContracts/UserReplicaSetManagerClient.ts +206 -0
- package/src/services/dataContracts/index.ts +1 -0
- package/src/services/discoveryProvider/DiscoveryProvider.ts +1168 -0
- package/src/services/discoveryProvider/DiscoveryProviderSelection.test.ts +536 -0
- package/src/services/discoveryProvider/DiscoveryProviderSelection.ts +383 -0
- package/src/services/discoveryProvider/constants.ts +13 -0
- package/src/services/discoveryProvider/index.ts +1 -0
- package/src/services/discoveryProvider/requests.ts +629 -0
- package/src/services/ethContracts/AudiusTokenClient.ts +163 -0
- package/src/services/ethContracts/ClaimDistributionClient.ts +45 -0
- package/src/services/ethContracts/ClaimsManagerClient.ts +102 -0
- package/src/services/ethContracts/DelegateManagerClient.ts +480 -0
- package/src/services/ethContracts/EthContracts.ts +359 -0
- package/src/services/ethContracts/EthRewardsManagerClient.ts +33 -0
- package/src/services/ethContracts/GovernanceClient.ts +451 -0
- package/src/services/ethContracts/RegistryClient.ts +33 -0
- package/src/services/ethContracts/ServiceProviderFactoryClient.ts +691 -0
- package/src/services/ethContracts/ServiceTypeManagerClient.ts +112 -0
- package/src/services/ethContracts/StakingProxyClient.ts +97 -0
- package/src/services/ethContracts/TrustedNotifierManagerClient.ts +101 -0
- package/src/services/ethContracts/WormholeClient.ts +97 -0
- package/src/services/ethContracts/index.ts +1 -0
- package/src/services/ethWeb3Manager/EthWeb3Manager.ts +239 -0
- package/src/services/ethWeb3Manager/index.ts +1 -0
- package/src/services/hedgehog/Hedgehog.ts +96 -0
- package/src/services/hedgehog/index.ts +1 -0
- package/src/services/identity/IdentityService.ts +551 -0
- package/src/services/identity/index.ts +1 -0
- package/src/services/identity/requests.ts +65 -0
- package/src/services/schemaValidator/SchemaValidator.ts +105 -0
- package/src/services/schemaValidator/index.ts +1 -0
- package/src/services/schemaValidator/schemas/trackSchema.json +267 -0
- package/src/services/schemaValidator/schemas/userSchema.json +230 -0
- package/src/services/solanaAudiusData/errors.ts +20 -0
- package/src/services/solanaAudiusData/index.ts +1189 -0
- package/src/services/solanaWeb3Manager/errors.js +101 -0
- package/src/services/solanaWeb3Manager/index.d.ts +46 -0
- package/src/services/solanaWeb3Manager/index.js +655 -0
- package/src/services/solanaWeb3Manager/padBNToUint8Array.ts +7 -0
- package/src/services/solanaWeb3Manager/rewards.js +941 -0
- package/src/services/solanaWeb3Manager/rewardsAttester.ts +1093 -0
- package/src/services/solanaWeb3Manager/tokenAccount.js +149 -0
- package/src/services/solanaWeb3Manager/transactionHandler.js +345 -0
- package/src/services/solanaWeb3Manager/transfer.js +272 -0
- package/src/services/solanaWeb3Manager/userBank.js +160 -0
- package/src/services/solanaWeb3Manager/utils.d.ts +31 -0
- package/src/services/solanaWeb3Manager/utils.js +163 -0
- package/src/services/solanaWeb3Manager/wAudio.js +28 -0
- package/src/services/solanaWeb3Manager/wAudio.test.js +30 -0
- package/src/services/web3Manager/Web3Config.ts +14 -0
- package/src/services/web3Manager/Web3Manager.ts +360 -0
- package/src/services/web3Manager/XMLHttpRequest.ts +11 -0
- package/src/services/web3Manager/index.ts +2 -0
- package/src/services/wormhole/index.js +424 -0
- package/src/types.ts +8 -0
- package/src/userStateManager.ts +53 -0
- package/src/utils/apiSigning.ts +51 -0
- package/src/utils/captcha.ts +97 -0
- package/src/utils/estimateGas.ts +64 -0
- package/src/utils/fileHasher.ts +278 -0
- package/src/utils/importContractABI.d.ts +9 -0
- package/src/utils/importContractABI.js +19 -0
- package/src/utils/index.ts +11 -0
- package/src/utils/multiProvider.ts +72 -0
- package/src/utils/network.test.ts +127 -0
- package/src/utils/network.ts +308 -0
- package/src/utils/promiseFight.test.ts +87 -0
- package/src/utils/promiseFight.ts +36 -0
- package/src/utils/signatures.ts +139 -0
- package/src/utils/types.ts +34 -0
- package/src/utils/utils.test.ts +36 -0
- package/src/utils/utils.ts +235 -0
- package/src/utils/uuid.ts +14 -0
- package/src/web3.d.ts +9 -0
- package/src/web3.js +8 -0
- package/tests/assets/static_image.png +0 -0
- package/tests/assets/static_text.txt +1 -0
- package/tests/audiusTokenClientTest.js +37 -0
- package/tests/creatorNodeTest.js +19 -0
- package/tests/fileHasherTest.js +125 -0
- package/tests/governanceTest.js +382 -0
- package/tests/helpers.js +105 -0
- package/tests/index.js +14 -0
- package/tests/playlistClientTest.js +157 -0
- package/tests/providerSelectionTest.js +241 -0
- package/tests/registryClientTest.js +19 -0
- package/tests/rewardsAttesterTest.js +373 -0
- package/tests/serviceTypeManagerClientTest.js +33 -0
- package/tests/socialFeatureClientTest.js +79 -0
- package/tests/stakingTest.js +302 -0
- package/tests/trackClientTest.js +86 -0
- package/tests/userClientTest.js +121 -0
- package/tsconfig.json +10 -0
- package/types/@audius-hedgehog/index.d.ts +39 -0
- package/types/abi-decoder/index.d.ts +41 -0
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { ContractABI, Utils } from '../../utils'
|
|
2
|
+
import { Web3Manager } from '../web3Manager'
|
|
3
|
+
import { ProviderSelection } from '../contracts/ProviderSelection'
|
|
4
|
+
import type { HttpProvider } from 'web3-core'
|
|
5
|
+
import type { Contract } from 'web3-eth-contract'
|
|
6
|
+
|
|
7
|
+
export class RegistryClient {
|
|
8
|
+
web3Manager: Web3Manager
|
|
9
|
+
contractABI: ContractABI['abi']
|
|
10
|
+
contractAddress: string
|
|
11
|
+
Registry: Contract
|
|
12
|
+
providerSelector: ProviderSelection | null
|
|
13
|
+
|
|
14
|
+
constructor(
|
|
15
|
+
web3Manager: Web3Manager,
|
|
16
|
+
contractABI: ContractABI['abi'],
|
|
17
|
+
contractAddress: string
|
|
18
|
+
) {
|
|
19
|
+
this.web3Manager = web3Manager
|
|
20
|
+
this.contractABI = contractABI
|
|
21
|
+
this.contractAddress = contractAddress
|
|
22
|
+
|
|
23
|
+
const web3 = this.web3Manager.getWeb3()
|
|
24
|
+
this.Registry = new web3.eth.Contract(contractABI, contractAddress)
|
|
25
|
+
|
|
26
|
+
if (
|
|
27
|
+
this.web3Manager instanceof Web3Manager &&
|
|
28
|
+
!this.web3Manager.web3Config.useExternalWeb3
|
|
29
|
+
) {
|
|
30
|
+
const providerEndpoints =
|
|
31
|
+
this.web3Manager.web3Config.internalWeb3Config.web3ProviderEndpoints
|
|
32
|
+
this.providerSelector = new ProviderSelection(providerEndpoints)
|
|
33
|
+
} else {
|
|
34
|
+
this.providerSelector = null
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
async getContract(contractRegistryKey: string): Promise<string | undefined> {
|
|
39
|
+
try {
|
|
40
|
+
Utils.checkStrLen(contractRegistryKey, 32)
|
|
41
|
+
const contract = await this.Registry.methods
|
|
42
|
+
.getContract(Utils.utf8ToHex(contractRegistryKey))
|
|
43
|
+
.call()
|
|
44
|
+
return contract
|
|
45
|
+
} catch (e) {
|
|
46
|
+
// If using ethWeb3Manager or useExternalWeb3 is true, do not do reselect provider logic and fail
|
|
47
|
+
if (!this.providerSelector) {
|
|
48
|
+
console.error(
|
|
49
|
+
`Failed to initialize contract ${JSON.stringify(this.contractABI)}`,
|
|
50
|
+
e
|
|
51
|
+
)
|
|
52
|
+
return
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
return await this.retryInit(contractRegistryKey)
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
async retryInit(contractRegistryKey: string) {
|
|
60
|
+
try {
|
|
61
|
+
await this.selectNewEndpoint()
|
|
62
|
+
const web3 = this.web3Manager.getWeb3()
|
|
63
|
+
this.Registry = new web3.eth.Contract(
|
|
64
|
+
this.contractABI,
|
|
65
|
+
this.contractAddress
|
|
66
|
+
)
|
|
67
|
+
return await this.getContract(contractRegistryKey)
|
|
68
|
+
} catch (e) {
|
|
69
|
+
console.error((e as Error).message)
|
|
70
|
+
return undefined
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
async selectNewEndpoint() {
|
|
75
|
+
const currentHost = (
|
|
76
|
+
this.web3Manager.getWeb3().currentProvider as HttpProvider
|
|
77
|
+
).host
|
|
78
|
+
if (this.providerSelector) {
|
|
79
|
+
this.providerSelector.addUnhealthy(currentHost)
|
|
80
|
+
|
|
81
|
+
if (
|
|
82
|
+
this.providerSelector.getUnhealthySize() ===
|
|
83
|
+
this.providerSelector.getServicesSize()
|
|
84
|
+
) {
|
|
85
|
+
throw new Error(
|
|
86
|
+
`No available, healthy providers to get contract ${JSON.stringify(
|
|
87
|
+
this.contractABI
|
|
88
|
+
)}`
|
|
89
|
+
)
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
await this.providerSelector.select(this)
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { ContractClient } from '../contracts/ContractClient'
|
|
2
|
+
import * as signatureSchemas from '../../../data-contracts/signatureSchemas'
|
|
3
|
+
import type { Web3Manager } from '../web3Manager'
|
|
4
|
+
|
|
5
|
+
export class SocialFeatureFactoryClient extends ContractClient {
|
|
6
|
+
override web3Manager!: Web3Manager
|
|
7
|
+
|
|
8
|
+
async addTrackRepost(userId: number, trackId: number) {
|
|
9
|
+
// generate new track repost request
|
|
10
|
+
const nonce = signatureSchemas.getNonce()
|
|
11
|
+
const chainId = await this.getEthNetId()
|
|
12
|
+
const contractAddress = await this.getAddress()
|
|
13
|
+
const signatureData =
|
|
14
|
+
signatureSchemas.generators.getAddTrackRepostRequestData(
|
|
15
|
+
chainId,
|
|
16
|
+
contractAddress,
|
|
17
|
+
userId,
|
|
18
|
+
trackId,
|
|
19
|
+
nonce
|
|
20
|
+
)
|
|
21
|
+
const sig = await this.web3Manager.signTypedData(signatureData)
|
|
22
|
+
|
|
23
|
+
// add new trackRepost to chain
|
|
24
|
+
const method = await this.getMethod(
|
|
25
|
+
'addTrackRepost',
|
|
26
|
+
userId,
|
|
27
|
+
trackId,
|
|
28
|
+
nonce,
|
|
29
|
+
sig
|
|
30
|
+
)
|
|
31
|
+
return await this.web3Manager.sendTransaction(
|
|
32
|
+
method,
|
|
33
|
+
this.contractRegistryKey,
|
|
34
|
+
contractAddress
|
|
35
|
+
)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
async deleteTrackRepost(userId: number, trackId: number) {
|
|
39
|
+
// generate new delete track repost request
|
|
40
|
+
const nonce = signatureSchemas.getNonce()
|
|
41
|
+
const chainId = await this.getEthNetId()
|
|
42
|
+
const contractAddress = await this.getAddress()
|
|
43
|
+
const signatureData =
|
|
44
|
+
signatureSchemas.generators.getDeleteTrackRepostRequestData(
|
|
45
|
+
chainId,
|
|
46
|
+
contractAddress,
|
|
47
|
+
userId,
|
|
48
|
+
trackId,
|
|
49
|
+
nonce
|
|
50
|
+
)
|
|
51
|
+
const sig = await this.web3Manager.signTypedData(signatureData)
|
|
52
|
+
|
|
53
|
+
// delete trackRepost from chain
|
|
54
|
+
const method = await this.getMethod(
|
|
55
|
+
'deleteTrackRepost',
|
|
56
|
+
userId,
|
|
57
|
+
trackId,
|
|
58
|
+
nonce,
|
|
59
|
+
sig
|
|
60
|
+
)
|
|
61
|
+
return await this.web3Manager.sendTransaction(
|
|
62
|
+
method,
|
|
63
|
+
this.contractRegistryKey,
|
|
64
|
+
contractAddress
|
|
65
|
+
)
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
async addPlaylistRepost(userId: number, playlistId: number) {
|
|
69
|
+
// generate new playlist repost request
|
|
70
|
+
const nonce = signatureSchemas.getNonce()
|
|
71
|
+
const chainId = await this.getEthNetId()
|
|
72
|
+
const contractAddress = await this.getAddress()
|
|
73
|
+
const signatureData =
|
|
74
|
+
signatureSchemas.generators.getAddPlaylistRepostRequestData(
|
|
75
|
+
chainId,
|
|
76
|
+
contractAddress,
|
|
77
|
+
userId,
|
|
78
|
+
playlistId,
|
|
79
|
+
nonce
|
|
80
|
+
)
|
|
81
|
+
const sig = await this.web3Manager.signTypedData(signatureData)
|
|
82
|
+
|
|
83
|
+
// add new playlistRepost to chain
|
|
84
|
+
const method = await this.getMethod(
|
|
85
|
+
'addPlaylistRepost',
|
|
86
|
+
userId,
|
|
87
|
+
playlistId,
|
|
88
|
+
nonce,
|
|
89
|
+
sig
|
|
90
|
+
)
|
|
91
|
+
return await this.web3Manager.sendTransaction(
|
|
92
|
+
method,
|
|
93
|
+
this.contractRegistryKey,
|
|
94
|
+
contractAddress
|
|
95
|
+
)
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
async deletePlaylistRepost(userId: number, playlistId: number) {
|
|
99
|
+
// generate new delete playlist repost request
|
|
100
|
+
const nonce = signatureSchemas.getNonce()
|
|
101
|
+
const chainId = await this.getEthNetId()
|
|
102
|
+
const contractAddress = await this.getAddress()
|
|
103
|
+
const signatureData =
|
|
104
|
+
signatureSchemas.generators.getDeletePlaylistRepostRequestData(
|
|
105
|
+
chainId,
|
|
106
|
+
contractAddress,
|
|
107
|
+
userId,
|
|
108
|
+
playlistId,
|
|
109
|
+
nonce
|
|
110
|
+
)
|
|
111
|
+
const sig = await this.web3Manager.signTypedData(signatureData)
|
|
112
|
+
|
|
113
|
+
// delete playlistRepost from chain
|
|
114
|
+
const method = await this.getMethod(
|
|
115
|
+
'deletePlaylistRepost',
|
|
116
|
+
userId,
|
|
117
|
+
playlistId,
|
|
118
|
+
nonce,
|
|
119
|
+
sig
|
|
120
|
+
)
|
|
121
|
+
return await this.web3Manager.sendTransaction(
|
|
122
|
+
method,
|
|
123
|
+
this.contractRegistryKey,
|
|
124
|
+
contractAddress
|
|
125
|
+
)
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
async addUserFollow(followerUserId: number, followeeUserId: number) {
|
|
129
|
+
if (followerUserId === followeeUserId) {
|
|
130
|
+
throw new Error(
|
|
131
|
+
`addUserFollow - identical value provided for follower and followee ${followerUserId}`
|
|
132
|
+
)
|
|
133
|
+
}
|
|
134
|
+
// generate new UserFollow request
|
|
135
|
+
const nonce = signatureSchemas.getNonce()
|
|
136
|
+
const chainId = await this.getEthNetId()
|
|
137
|
+
const contractAddress = await this.getAddress()
|
|
138
|
+
const signatureData = signatureSchemas.generators.getUserFollowRequestData(
|
|
139
|
+
chainId,
|
|
140
|
+
contractAddress,
|
|
141
|
+
followerUserId,
|
|
142
|
+
followeeUserId,
|
|
143
|
+
nonce
|
|
144
|
+
)
|
|
145
|
+
const sig = await this.web3Manager.signTypedData(signatureData)
|
|
146
|
+
|
|
147
|
+
// add new UserFollow to chain
|
|
148
|
+
const method = await this.getMethod(
|
|
149
|
+
'addUserFollow',
|
|
150
|
+
followerUserId,
|
|
151
|
+
followeeUserId,
|
|
152
|
+
nonce,
|
|
153
|
+
sig
|
|
154
|
+
)
|
|
155
|
+
return await this.web3Manager.sendTransaction(
|
|
156
|
+
method,
|
|
157
|
+
this.contractRegistryKey,
|
|
158
|
+
contractAddress
|
|
159
|
+
)
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
async deleteUserFollow(followerUserId: number, followeeUserId: number) {
|
|
163
|
+
if (followerUserId === followeeUserId) {
|
|
164
|
+
throw new Error(
|
|
165
|
+
`deleteUserFollow - Invalid identical value provided for follower and followee ${followerUserId}`
|
|
166
|
+
)
|
|
167
|
+
}
|
|
168
|
+
// generate new deleteUserFollow request
|
|
169
|
+
const nonce = signatureSchemas.getNonce()
|
|
170
|
+
const chainId = await this.getEthNetId()
|
|
171
|
+
const contractAddress = await this.getAddress()
|
|
172
|
+
const signatureData =
|
|
173
|
+
signatureSchemas.generators.getDeleteUserFollowRequestData(
|
|
174
|
+
chainId,
|
|
175
|
+
contractAddress,
|
|
176
|
+
followerUserId,
|
|
177
|
+
followeeUserId,
|
|
178
|
+
nonce
|
|
179
|
+
)
|
|
180
|
+
const sig = await this.web3Manager.signTypedData(signatureData)
|
|
181
|
+
|
|
182
|
+
// delete UserFollow from chain
|
|
183
|
+
const method = await this.getMethod(
|
|
184
|
+
'deleteUserFollow',
|
|
185
|
+
followerUserId,
|
|
186
|
+
followeeUserId,
|
|
187
|
+
nonce,
|
|
188
|
+
sig
|
|
189
|
+
)
|
|
190
|
+
return await this.web3Manager.sendTransaction(
|
|
191
|
+
method,
|
|
192
|
+
this.contractRegistryKey,
|
|
193
|
+
contractAddress
|
|
194
|
+
)
|
|
195
|
+
}
|
|
196
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { ContractClient } from '../contracts/ContractClient'
|
|
2
|
+
import * as signatureSchemas from '../../../data-contracts/signatureSchemas'
|
|
3
|
+
import type { Web3Manager } from '../web3Manager'
|
|
4
|
+
|
|
5
|
+
export class TrackFactoryClient extends ContractClient {
|
|
6
|
+
override web3Manager!: Web3Manager
|
|
7
|
+
/* ------- GETTERS ------- */
|
|
8
|
+
|
|
9
|
+
async getTrack(trackId: string) {
|
|
10
|
+
const method = await this.getMethod('getTrack', trackId)
|
|
11
|
+
return method.call()
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/* ------- SETTERS ------- */
|
|
15
|
+
|
|
16
|
+
/** uint _userId, bytes32 _multihashDigest, uint8 _multihashHashFn, uint8 _multihashSize */
|
|
17
|
+
async addTrack(
|
|
18
|
+
userId: number,
|
|
19
|
+
multihashDigest: string,
|
|
20
|
+
multihashHashFn: number,
|
|
21
|
+
multihashSize: number
|
|
22
|
+
) {
|
|
23
|
+
const nonce = signatureSchemas.getNonce()
|
|
24
|
+
const chainId = await this.getEthNetId()
|
|
25
|
+
const contractAddress = await this.getAddress()
|
|
26
|
+
const signatureData = signatureSchemas.generators.getAddTrackRequestData(
|
|
27
|
+
chainId,
|
|
28
|
+
contractAddress,
|
|
29
|
+
userId,
|
|
30
|
+
multihashDigest,
|
|
31
|
+
multihashHashFn,
|
|
32
|
+
multihashSize,
|
|
33
|
+
nonce
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
const sig = await this.web3Manager.signTypedData(signatureData)
|
|
37
|
+
const method = await this.getMethod(
|
|
38
|
+
'addTrack',
|
|
39
|
+
userId,
|
|
40
|
+
multihashDigest,
|
|
41
|
+
multihashHashFn,
|
|
42
|
+
multihashSize,
|
|
43
|
+
nonce,
|
|
44
|
+
sig
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
const tx = await this.web3Manager.sendTransaction(
|
|
48
|
+
method,
|
|
49
|
+
this.contractRegistryKey,
|
|
50
|
+
contractAddress
|
|
51
|
+
)
|
|
52
|
+
return {
|
|
53
|
+
trackId: parseInt(tx.events?.['NewTrack']?.returnValues._id, 10),
|
|
54
|
+
txReceipt: tx
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/** uint _trackId, uint _trackOwnerId, bytes32 _multihashDigest, uint8 _multihashHashFn, uint8 _multihashSize */
|
|
59
|
+
async updateTrack(
|
|
60
|
+
trackId: number,
|
|
61
|
+
trackOwnerId: number,
|
|
62
|
+
multihashDigest: string,
|
|
63
|
+
multihashHashFn: number,
|
|
64
|
+
multihashSize: number
|
|
65
|
+
) {
|
|
66
|
+
const nonce = signatureSchemas.getNonce()
|
|
67
|
+
const chainId = await this.getEthNetId()
|
|
68
|
+
const contractAddress = await this.getAddress()
|
|
69
|
+
const signatureData = signatureSchemas.generators.getUpdateTrackRequestData(
|
|
70
|
+
chainId,
|
|
71
|
+
contractAddress,
|
|
72
|
+
trackId,
|
|
73
|
+
trackOwnerId,
|
|
74
|
+
multihashDigest,
|
|
75
|
+
multihashHashFn,
|
|
76
|
+
multihashSize,
|
|
77
|
+
nonce
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
const sig = await this.web3Manager.signTypedData(signatureData)
|
|
81
|
+
const method = await this.getMethod(
|
|
82
|
+
'updateTrack',
|
|
83
|
+
trackId,
|
|
84
|
+
trackOwnerId,
|
|
85
|
+
multihashDigest,
|
|
86
|
+
multihashHashFn,
|
|
87
|
+
multihashSize,
|
|
88
|
+
nonce,
|
|
89
|
+
sig
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
const tx = await this.web3Manager.sendTransaction(
|
|
93
|
+
method,
|
|
94
|
+
this.contractRegistryKey,
|
|
95
|
+
contractAddress
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
return {
|
|
99
|
+
trackId: parseInt(tx.events?.['UpdateTrack']?.returnValues._trackId, 10),
|
|
100
|
+
txReceipt: tx
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* @return deleted trackId from on-chain event log
|
|
106
|
+
*/
|
|
107
|
+
async deleteTrack(trackId: number) {
|
|
108
|
+
const nonce = signatureSchemas.getNonce()
|
|
109
|
+
const chainId = await this.getEthNetId()
|
|
110
|
+
const contractAddress = await this.getAddress()
|
|
111
|
+
const signatureData = signatureSchemas.generators.getDeleteTrackRequestData(
|
|
112
|
+
chainId,
|
|
113
|
+
contractAddress,
|
|
114
|
+
trackId,
|
|
115
|
+
nonce
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
const sig = await this.web3Manager.signTypedData(signatureData)
|
|
119
|
+
const method = await this.getMethod('deleteTrack', trackId, nonce, sig)
|
|
120
|
+
|
|
121
|
+
const tx = await this.web3Manager.sendTransaction(
|
|
122
|
+
method,
|
|
123
|
+
this.contractRegistryKey,
|
|
124
|
+
contractAddress
|
|
125
|
+
)
|
|
126
|
+
return {
|
|
127
|
+
trackId: parseInt(tx.events?.['TrackDeleted']?.returnValues._trackId, 10),
|
|
128
|
+
txReceipt: tx
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|