Add follow button for channels
This commit is contained in:
parent
67812ff3d0
commit
8984f4bea2
3 changed files with 69 additions and 3 deletions
24
source/src/pages/api/subscription/add.astro
Normal file
24
source/src/pages/api/subscription/add.astro
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
---
|
||||||
|
import Base from "@layouts/Default.astro"
|
||||||
|
const CreatorId = Astro.url.href.split("add?=").pop()
|
||||||
|
import { supabase } from "@library/supabase"
|
||||||
|
const { data: { user } } = await supabase.auth.getUser()
|
||||||
|
const { data, error } = await supabase
|
||||||
|
.from('subs')
|
||||||
|
.insert([
|
||||||
|
{
|
||||||
|
UserSubscribed: user?.id,
|
||||||
|
Id: CreatorId,
|
||||||
|
Platform: "YouTube"
|
||||||
|
},
|
||||||
|
])
|
||||||
|
.select()
|
||||||
|
|
||||||
|
return Astro.redirect("/channel/" + CreatorId)
|
||||||
|
---
|
||||||
|
|
||||||
|
<Base Title="MinPluto">
|
||||||
|
<div class="content">
|
||||||
|
<p>One moment...</p>
|
||||||
|
</div>
|
||||||
|
</Base>
|
21
source/src/pages/api/subscription/remove.astro
Normal file
21
source/src/pages/api/subscription/remove.astro
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
---
|
||||||
|
import Base from "@layouts/Default.astro"
|
||||||
|
const CreatorId = Astro.url.href.split("remove?=").pop()
|
||||||
|
import { supabase } from "@library/supabase"
|
||||||
|
const { data: { user } } = await supabase.auth.getUser()
|
||||||
|
const id = user?.id
|
||||||
|
const { data, error } = await supabase
|
||||||
|
.from('subs')
|
||||||
|
.delete()
|
||||||
|
.eq('UserSubscribed', id)
|
||||||
|
.eq('Id', CreatorId)
|
||||||
|
.eq('Platform', 'YouTube')
|
||||||
|
|
||||||
|
return Astro.redirect("/channel/" + CreatorId)
|
||||||
|
---
|
||||||
|
|
||||||
|
<Base Title="MinPluto">
|
||||||
|
<div class="content">
|
||||||
|
<p>One moment...</p>
|
||||||
|
</div>
|
||||||
|
</Base>
|
|
@ -13,15 +13,36 @@ import { BrightStar, Donate, Download, ShareIos, ThumbsUp } from "@iconoir/vue";
|
||||||
import Video from '@components/VideoItem.astro'
|
import Video from '@components/VideoItem.astro'
|
||||||
|
|
||||||
// Fetch
|
// Fetch
|
||||||
const SWV = Astro.url.href.split("channel/").pop();
|
const CreatorId = Astro.url.href.split("channel/").pop();
|
||||||
const channel = await fetch(DEFAULT_MEDIA_DATA_PROXY + "/api/v1/channels/" + SWV).then((response) => response.json());
|
const channel = await fetch(DEFAULT_MEDIA_DATA_PROXY + "/api/v1/channels/" + CreatorId).then((response) => response.json());
|
||||||
const DescriptionFormat = channel.descriptionHtml.replaceAll("\n", " <br/> ");
|
const DescriptionFormat = channel.descriptionHtml.replaceAll("\n", " <br/> ");
|
||||||
|
|
||||||
|
// User Subscription
|
||||||
|
import { supabase } from "@library/supabase"
|
||||||
|
const { data: { user } } = await supabase.auth.getUser()
|
||||||
|
const id = user?.id
|
||||||
|
let { data: subs } = await supabase
|
||||||
|
.from('subs')
|
||||||
|
.select("*")
|
||||||
|
.eq('UserSubscribed', id)
|
||||||
|
.eq('Id', CreatorId)
|
||||||
|
|
||||||
|
if (subs[0] === undefined) {
|
||||||
|
var Subbed = false
|
||||||
|
} else {
|
||||||
|
var Subbed = true
|
||||||
|
}
|
||||||
---
|
---
|
||||||
|
|
||||||
<Base Title="MinPluto" Description="">
|
<Base Title="MinPluto" Description="">
|
||||||
<div class="channel-backdrop">
|
<div class="channel-backdrop">
|
||||||
<!-- <img src={channel.authorBanners[0].url}/> --> <!-- BROKEN -->
|
<!-- <img src={channel.authorBanners[0].url}/> --> <!-- BROKEN -->
|
||||||
</div>
|
</div>
|
||||||
|
{Subbed ?
|
||||||
|
<a href={'/api/subscription/remove?=' + CreatorId}>Unfollow</a>
|
||||||
|
:
|
||||||
|
<a href={'/api/subscription/add?=' + CreatorId}>Follow</a>
|
||||||
|
}
|
||||||
<div class="channel">
|
<div class="channel">
|
||||||
<div class="channel-header">
|
<div class="channel-header">
|
||||||
<div class="channel-banner">
|
<div class="channel-banner">
|
||||||
|
@ -29,7 +50,7 @@ const DescriptionFormat = channel.descriptionHtml.replaceAll("\n", " <br/> ");
|
||||||
</div>
|
</div>
|
||||||
<div class="channel-meta">
|
<div class="channel-meta">
|
||||||
<div>
|
<div>
|
||||||
<img src={channel.authorThumbnails[0].url}/>
|
<img src={channel.authorThumbnails[1].url}/>
|
||||||
<h2>{channel.author}</h2>
|
<h2>{channel.author}</h2>
|
||||||
<p>{channel.subCountText}</p>
|
<p>{channel.subCountText}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
Reference in a new issue