Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion database/seeders/DemoEventSeeder.php
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public function run(): void
'hash' => '40fa2aa67258b4ce7b5782f74831d46a84c59a0ff0c28262fab21728',
],
[
'name' => 'SpaceBudz (NFT)',
'name' => '$Handles (NFT)',
'hash' => 'f0ff48bbb7bbe9d59a40f1ce90e9e9d0ff5002ec48f232b49ca0fb9a',
],
[
Expand Down
137 changes: 20 additions & 117 deletions resources/js/Pages/Event/Show.vue
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ const format_wallet_name = (wallet) => {
}

const find_wallets = () => {
const target_wallet = localStorage.getItem('connected_wallet');
let loop = setInterval(() => {
if (cardano.value.attempts <= 0) {
if (cardano.value.wallets.length) {
Expand All @@ -119,14 +120,17 @@ const find_wallets = () => {
cardano.value.hasCardano = true;

Object.keys(window.cardano)
.forEach((name) => {
.forEach(async (name) => {


if (!is_valid_wallet(name)) {
return;
}

const wallet = window.cardano[name];
if (wallet.name === target_wallet && !cardano.value.connected) {
await connect(wallet);
}

if (!cardano.value.wallets.includes(wallet)) {
cardano.value.wallets.push(wallet);
Expand All @@ -147,17 +151,19 @@ const connect = async (wallet) => {
wallet.busy = false;
return;
}
localStorage.setItem('connected_wallet', wallet.name);
cardano.value.connected = wallet;
wallet.busy = false;
modal.value.connectWallet = false;
cardano.value.network_mode = await cardano.value.connection.getNetworkId();
check_balance();
await check_balance();
}

const disconnect = () => {
cardano.value.connected = null;
cardano.value.connection = null;
cardano.value.network_mode = null;
localStorage.removeItem('connected_wallet');
}

const check_balance = async () => {
Expand Down Expand Up @@ -190,11 +196,17 @@ const check_balance = async () => {
.len(); i++) {
const Asset = policy_assets.keys()
.get(i);
const AssetName = toAscii(Asset.name());
const asset_id = toHex(Asset.name());
const asset_ascii = toAscii(Buffer.from(
asset_id.startsWith('000de140')
? asset_id.substring(8)
: asset_id,
"hex"
));
const asset = {
name: AssetName,
name: asset_ascii,
policy_id: policy.hash,
asset_id: toHex(Asset.name()),
asset_id: asset_id,
};
make_fingerprint(asset);
wallet.assets[policy.hash].push(asset);
Expand Down Expand Up @@ -257,35 +269,7 @@ const generate_ticket = async (asset) => {
let signature;

try {
if (!cardano.value.hardware_mode) {
signature = await signData(stake_address_cbor, nonce, asset.policy_id, asset.asset_id);
} else {
const txn = await createTxn(stake_key, nonce);
const witness = await cardano.value.connection.signTx(txn.to_hex(), true);

const witnessSet = TransactionWitnessSet.new();
const totalVkeys = Vkeywitnesses.new();
const addWitness = TransactionWitnessSet.from_bytes(Buffer.from(witness, 'hex'));
const addVkeys = addWitness.vkeys();
if (addVkeys) {
for (let i = 0; i < addVkeys.len(); i++) {
totalVkeys.add(addVkeys.get(i));
}
}

witnessSet.set_vkeys(totalVkeys);
const signedTx = Transaction.new(
txn.body(),
witnessSet,
txn.auxiliary_data()
);


signature = {
txn: signedTx.to_hex(),
witness
};
}
signature = await signData(stake_address_cbor, nonce, asset.policy_id, asset.asset_id);
} catch (e) {
console.error(`Ticket Signing Error!`, e);
}
Expand Down Expand Up @@ -320,76 +304,14 @@ const generate_ticket = async (asset) => {
let qr_code_value = null;
let qr_image_value = '';

const createTxn = async (stake_key, nonce) => {
const params = await Koios.getParameters({
project_id: koios_token
});
const txBuilder = CardanoTxn.prepare({parameters: params});

try {
const metadata_list = MetadataList.new();
while (nonce) {
if (nonce.length < 64) {
metadata_list.add(TransactionMetadatum.new_text(nonce));
break;
} else {
metadata_list.add(TransactionMetadatum.new_text(nonce.substring(0, 64)));
nonce = nonce.substring(64);
}
}
txBuilder.add_metadatum(
BigNum.from_str('8'),
TransactionMetadatum.new_list(
metadata_list
)
);
} catch (e) {
console.error(`Couldn't add metadata?`, e, nonce);
}

const reward_address = RewardAddress.from_address(stake_key);
const reward_keyhash = reward_address.payment_cred()
.to_keyhash();

const tx_certs = Certificates.new();
tx_certs.add(
Certificate.new_stake_delegation(
StakeDelegation.new(
StakeCredential.from_keyhash(reward_keyhash),
Ed25519KeyHash.from_bech32(`pool14wk2m2af7y4gk5uzlsmsunn7d9ppldvcxxa5an9r5ywek8330fg`)
)
)
);

txBuilder.set_certs(tx_certs);
txBuilder.set_fee(BigNum.from_str('0'));
txBuilder.set_ttl(1);

return txBuilder.build_tx();
}

const signData = async (stake_address, nonce, policy_id, asset_id) => {
const signData = async (stake_address, nonce) => {
const payload = cardano.value.connection.signData(stake_address, nonce);
console.log(`Sign Data Payload`, payload);
return payload;
}

onMounted(async () => {
find_wallets();
localTheme.value = localStorage.getItem('gatekeeper:theme') ?? 'light';
theme.global.name.value = localTheme.value;
});

const theme = useTheme()

const toggleTheme = () => {
const theme_value = theme.global.current.value.dark ? 'light' : 'dark'
localStorage.setItem('gatekeeper:theme', theme_value);
theme.global.name.value = theme_value;
}

const localTheme = ref({
value: null
});

const bg_image = 'url(' + props.event.bg_image_url + ')';
Expand All @@ -409,16 +331,7 @@ header {
<GuestLayout title="Show Event">
<template #header>
<header class="pb-16 px-8 text-start">
<AppHeader />
<v-toolbar class="d-flex flex-row pb-16" color="transparent">
<v-spacer></v-spacer>
<v-toolbar-items>
<v-btn @click="toggleTheme">
<v-icon
:icon="theme.global.current.value.dark ? 'mdi-weather-sunny' : 'mdi-weather-night'"/>
</v-btn>
</v-toolbar-items>
</v-toolbar>
<AppHeader/>
<div class="d-flex align-center align-content-center my-16">
<v-avatar :image="event.profile_photo_url" class="me-4" size="128"/>
<div>
Expand Down Expand Up @@ -480,17 +393,7 @@ header {
<v-icon icon="mdi-power"/>
</v-btn>
</div>
<br/>
<v-switch v-model="cardano.hardware_mode" color="primary"
density="comfortable">
<template v-slot:label>
Hardware Wallet Compatibility Mode is {{
cardano.hardware_mode ? 'ON' : 'OFF'
}}
</template>
</v-switch>
</div>

</template>
</div>
</header>
Expand Down