import {
createEffect,
createMemo,
createResource,
createSignal,
For,
Match,
onMount,
ParentComponent,
Show,
Suspense,
Switch,
} from "solid-js"
import {
CENTER_COLUMN,
MISSING_LABEL,
REDSHIFT_LABEL,
RIGHT_COLUMN,
THREE_COLUMNS,
UtxoItem,
} from "~/components/Activity"
import {
Card,
DefaultMain,
LargeHeader,
LoadingSpinner,
NiceP,
MutinyWalletGuard,
SafeArea,
SmallAmount,
SmallHeader,
VStack,
} from "~/components/layout"
import { BackLink } from "~/components/layout/BackLink"
import { StyledRadioGroup } from "~/components/layout/Radio"
import NavBar from "~/components/NavBar"
import { useMegaStore } from "~/state/megaStore"
import wave from "~/assets/wave.gif"
import utxoIcon from "~/assets/icons/coin.svg"
import { Button } from "~/components/layout/Button"
import { ProgressBar } from "~/components/layout/ProgressBar"
import { MutinyChannel } from "@mutinywallet/mutiny-wasm"
import mempoolTxUrl from "~/utils/mempoolTxUrl"
import { Amount } from "~/components/Amount"
import { getRedshifted, setRedshifted } from "~/utils/fakeLabels"
import { Network } from "~/logic/mutinyWalletSetup"
type ShiftOption = "utxo" | "lightning"
type ShiftStage = "choose" | "observe" | "success" | "failure"
type OutPoint = string // Replace with the actual TypeScript type for OutPoint
type RedshiftStatus = string // Replace with the actual TypeScript type for RedshiftStatus
type RedshiftRecipient = unknown // Replace with the actual TypeScript type for RedshiftRecipient
type PublicKey = unknown // Replace with the actual TypeScript type for PublicKey
interface RedshiftResult {
id: string
input_utxo: OutPoint
status: RedshiftStatus
recipient: RedshiftRecipient
output_utxo?: OutPoint
introduction_channel?: OutPoint
output_channel?: OutPoint
introduction_node: PublicKey
amount_sats: bigint
change_amt?: bigint
fees_paid: bigint
}
const dummyRedshift: RedshiftResult = {
id: "44036599c37d590899e8d5d920860286",
input_utxo:
"44036599c37d590899e8d5d92086028695d2c2966fdc354ce1da9a9eac610a53:1",
status: "Completed", // Replace with a dummy value for RedshiftStatus
recipient: {}, // Replace with a dummy value for RedshiftRecipient
output_utxo:
"44036599c37d590899e8d5d92086028695d2c2966fdc354ce1da9a9eac610a53:1",
introduction_channel:
"a7773e57f8595848a635e9af105927cac9ecaf292d71a76456ae0455bd3c9c64:0",
output_channel:
"a7773e57f8595848a635e9af105927cac9ecaf292d71a76456ae0455bd3c9c64:0",
introduction_node: {}, // Replace with a dummy value for PublicKey
amount_sats: BigInt(1000000),
change_amt: BigInt(12345),
fees_paid: BigInt(2500),
}
function RedshiftReport(props: { redshift: RedshiftResult; utxo: UtxoItem }) {
const [state, _actions] = useMegaStore()
const getUtXos = async () => {
console.log("Getting utxos")
return (await state.mutiny_wallet?.list_utxos()) as UtxoItem[]
}
// function findUtxoByOutpoint(
// outpoint?: string,
// utxos: UtxoItem[] = []
// ): UtxoItem | undefined {
// if (!outpoint) return undefined
// return utxos.find((utxo) => utxo.outpoint === outpoint)
// }
const [_utxos, { refetch: _refetchUtxos }] = createResource(getUtXos)
// const inputUtxo = createMemo(() => {
// console.log(utxos())
// const foundUtxo = findUtxoByOutpoint(props.redshift.input_utxo, utxos())
// console.log("Found utxo:", foundUtxo)
// return foundUtxo
// })
const [redshiftResource, { refetch: _refetchRedshift }] = createResource(
async () => {
console.log("Checking redshift", props.redshift.id)
const redshift = await state.mutiny_wallet?.get_redshift(props.redshift.id)
console.log(redshift)
return redshift
}
)
onMount(() => {
// const interval = setInterval(() => {
// if (redshiftResource()) refetch()
// // if (sentAmount() === 200000) {
// // clearInterval(interval)
// // props.setShiftStage("success");
// // // setSentAmount((0))
// // } else {
// // setSentAmount((sentAmount() + 50000))
// // }
// }, 1000)
})
// const outputUtxo = createMemo(() => {
// return findUtxoByOutpoint(redshiftResource()?.output_utxo, utxos())
// })
createEffect(() => {
setRedshifted(true, redshiftResource()?.output_utxo)
})
const network = state.mutiny_wallet?.get_network() as Network
return (
{redshiftResource()!.introduction_channel}
View on mempool
{redshiftResource()!.output_channel}
View on mempool
{FAKE_STATES[fakeStage()]}
{props.key}
{props.children}{JSON.stringify(redshiftResource(), null, 2)} */}
No utxos (empty state)
No utxos (empty state)