Reddit share link

This commit is contained in:
Hayk Martiros 2022-12-14 22:52:33 -08:00
parent bcfb51591d
commit f2fce4c2fb
1 changed files with 39 additions and 9 deletions

View File

@ -1,6 +1,7 @@
import { Dialog, Transition } from "@headlessui/react"; import { Dialog, Transition } from "@headlessui/react";
import { Fragment, useState } from "react"; import { Fragment, useCallback, useState } from "react";
import { FiShare } from "react-icons/fi"; import { FiShare } from "react-icons/fi";
import { GrTwitter, GrReddit } from "react-icons/gr";
import styled from "styled-components"; import styled from "styled-components";
import { InferenceResult } from "../types"; import { InferenceResult } from "../types";
@ -67,14 +68,16 @@ export default function Share({
var numInferenceSteps; var numInferenceSteps;
var alphaVelocity; var alphaVelocity;
if (!nowPlayingResult) { const result = nowPlayingResult ? nowPlayingResult : inferenceResults[0];
if (!result) {
return window.location.href; return window.location.href;
} else { } else {
var selectedInput: InferenceResult["input"]; var selectedInput: InferenceResult["input"];
if (secondsAgo == 0) { if (secondsAgo == 0) {
selectedInput = nowPlayingResult.input; selectedInput = result.input;
} else { } else {
var selectedCounter = nowPlayingResult.counter - secondsAgo / 5; var selectedCounter = result.counter - secondsAgo / 5;
selectedInput = inferenceResults.find( selectedInput = inferenceResults.find(
(result) => result.counter == selectedCounter (result) => result.counter == selectedCounter
)?.input; )?.input;
@ -90,12 +93,12 @@ export default function Share({
seed = selectedInput.start.seed; seed = selectedInput.start.seed;
denoising = selectedInput.start.denoising; denoising = selectedInput.start.denoising;
maskImageId = selectedInput.mask_image_id; maskImageId = selectedInput.mask_image_id;
seedImageId = nowPlayingResult.input.seed_image_id; seedImageId = result.input.seed_image_id;
// TODO, selectively add these based on whether we give user option to change them // TODO, selectively add these based on whether we give user option to change them
// guidance = nowPlayingResult.input.guidance // guidance = result.input.guidance
// numInferenceSteps = nowPlayingResult.input.num_inference_steps // numInferenceSteps = result.input.num_inference_steps
// alphaVelocity = nowPlayingResult.input.alpha_velocity // alphaVelocity = result.input.alpha_velocity
} }
var baseUrl = window.location.origin + "/?"; var baseUrl = window.location.origin + "/?";
@ -159,6 +162,18 @@ export default function Share({
return shareUrl; return shareUrl;
} }
const getRedditLink = useCallback(() => {
if (inferenceResults.length == 0) {
return null;
}
const result = nowPlayingResult ? nowPlayingResult : inferenceResults[0];
const encodedPrompt = encodeURIComponent(result.input.start.prompt);
const encodedUrl = encodeURIComponent(generateLink(0));
return `https://www.reddit.com/r/riffusion/submit?title=Prompt:+${encodedPrompt}&url=${encodedUrl}`;
}, [nowPlayingResult, inferenceResults]);
return ( return (
<> <>
<button <button
@ -209,7 +224,22 @@ export default function Share({
as="h1" as="h1"
className="text-3xl font-medium leading-6 text-gray-900 pb-2" className="text-3xl font-medium leading-6 text-gray-900 pb-2"
> >
Share your riff <div className="flex">
<span className="w-4/5">Share your riff</span>
<GrTwitter
className="ml-4 w-8 h-8 mb-1 text-[#1DA1F2]"
onClick={() => {
console.log("click");
}}
/>
<GrReddit
className="ml-4 w-8 h-8 mb-1 text-[#FF4500]"
onClick={() => {
window.open(getRedditLink(), "_blank");
}}
/>
</div>
</Dialog.Title> </Dialog.Title>
<div className="mt-4"> <div className="mt-4">
{!getActiveResult() && ( {!getActiveResult() && (