Skip to content

Integrate Admin Functions with BattleManager #14

Description

@Mrwicks00

Description

Connect the admin page (frontend/app/admin/page.tsx) to allow battle creators to manage battles through the BattleManager contract.

Tasks

  • Create a custom hook useCreateBattle() that calls BattleManager.createBattle() via wagmi
  • Create a custom hook useStartSubmissionPhase() that calls BattleManager.startSubmissionPhase(battleId)
  • Create a custom hook useStartVotingPhase() that calls BattleManager.startVotingPhase(battleId)
  • Create a custom hook useFinalizeBattle() that calls BattleManager.finalizeBattle(battleId)
  • Create a custom hook useArchiveBattle() that calls BattleManager.archiveBattle(battleId)
  • Create a custom hook usePauseBattle() that calls BattleManager.pause()
  • Create a custom hook useUnpauseBattle() that calls BattleManager.unpause()
  • Add owner check to restrict admin functions to contract owner
  • Convert form inputs (hours) to Unix timestamps for contract
  • Display active battles with their states
  • Add buttons for phase transitions (Start Submission, Start Voting, Finalize, Archive)
  • Show transaction status for each action
  • Handle errors (not owner, wrong state, etc.)

Contract Functions Used

  • BattleManager.createBattle(string theme, uint64 submissionStart, uint64 submissionEnd, uint64 votingEnd, uint256 minStake, uint256 maxSubmissionsPerUser) - Create new battle
  • BattleManager.startSubmissionPhase(uint256 battleId) - Open submissions
  • BattleManager.startVotingPhase(uint256 battleId) - Open voting
  • BattleManager.finalizeBattle(uint256 battleId) - Finalize battle and distribute prizes
  • BattleManager.archiveBattle(uint256 battleId) - Archive finalized battle
  • BattleManager.pause() - Pause contract
  • BattleManager.unpause() - Unpause contract
  • BattleManager.owner() - Check if user is owner

Files to Modify

  • frontend/app/admin/page.tsx
  • frontend/hooks/useCreateBattle.ts (new file)
  • frontend/hooks/useBattleAdmin.ts (new file - for phase transitions)

Metadata

Metadata

Assignees

No one assigned

    Labels

    good first issueGood for newcomersnot-paidThis issue or pull request already exists

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions