added foreign reaction capabilties (chuckya)
This commit is contained in:
parent
a9fdd913f3
commit
7f993ee538
|
@ -16,8 +16,9 @@ const server_types = {
|
|||
};
|
||||
|
||||
export const capabilities = {
|
||||
MARKDOWN_CONTENT: "mdcontent",
|
||||
MARKDOWN_CONTENT: "markdown_content",
|
||||
REACTIONS: "reactions",
|
||||
FOREIGN_REACTIONS: "foreign_reactions",
|
||||
};
|
||||
|
||||
// if server is falsy, assume user has not begun the login process.
|
||||
|
@ -118,6 +119,7 @@ function getCapabilities(type) {
|
|||
break;
|
||||
case server_types.CHUCKYA:
|
||||
c.push(capabilities.REACTIONS);
|
||||
c.push(capabilities.FOREIGN_REACTIONS);
|
||||
break;
|
||||
case server_types.FIREFISH:
|
||||
c.push(capabilities.REACTIONS);
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
import RepostIcon from '../../../img/icons/repost.svg';
|
||||
import FavouriteIcon from '../../../img/icons/like.svg';
|
||||
import FavouriteIconFill from '../../../img/icons/like_fill.svg';
|
||||
import ReactIcon from '../../../img/icons/react.svg';
|
||||
import QuoteIcon from '../../../img/icons/quote.svg';
|
||||
import MoreIcon from '../../../img/icons/more.svg';
|
||||
|
||||
|
@ -45,23 +44,6 @@
|
|||
post.favourite_count = data.favourites_count;
|
||||
if (data.reactions) post.reactions = parseReactions(data.reactions);
|
||||
}
|
||||
|
||||
async function toggleReaction(reaction) {
|
||||
if (reaction.name.includes('@')) return;
|
||||
|
||||
let data;
|
||||
if (reaction.me)
|
||||
data = await api.unreactPost(get(server).host, get(app).token, post.id, reaction.name);
|
||||
else
|
||||
data = await api.reactPost(get(server).host, get(app).token, post.id, reaction.name);
|
||||
if (!data) {
|
||||
console.error(`Failed to favourite post ${post.id}`);
|
||||
return;
|
||||
}
|
||||
post.favourited = data.favourited;
|
||||
post.favourite_count = data.favourites_count;
|
||||
if (data.reactions) post.reactions = parseReactions(data.reactions);
|
||||
}
|
||||
</script>
|
||||
|
||||
<div class="post-actions" aria-label="Post actions" on:mouseup|stopPropagation on:keydown|stopPropagation>
|
||||
|
|
|
@ -1,8 +1,35 @@
|
|||
<script>
|
||||
import * as api from '$lib/api.js';
|
||||
import { server, capabilities } from '$lib/client/server.js';
|
||||
import { app } from '$lib/client/app.js';
|
||||
import { get } from 'svelte/store';
|
||||
import { parseReactions } from '$lib/post.js';
|
||||
|
||||
import ReactionButton from './ReactionButton.svelte';
|
||||
import ReactIcon from '../../../img/icons/react.svg';
|
||||
|
||||
export let post;
|
||||
|
||||
async function toggleReaction(reaction) {
|
||||
if (
|
||||
reaction.name.includes('@') &&
|
||||
!$server.capabilities.includes(capabilities.FOREIGN_REACTIONS)
|
||||
) return;
|
||||
|
||||
let data;
|
||||
if (reaction.me)
|
||||
data = await api.unreactPost(get(server).host, get(app).token, post.id, reaction.name);
|
||||
else
|
||||
data = await api.reactPost(get(server).host, get(app).token, post.id, reaction.name);
|
||||
if (!data) {
|
||||
console.error(`Failed to favourite post ${post.id}`);
|
||||
return;
|
||||
}
|
||||
|
||||
post.favourited = data.favourited;
|
||||
post.favourite_count = data.favourites_count;
|
||||
if (data.reactions) post.reactions = parseReactions(data.reactions);
|
||||
}
|
||||
</script>
|
||||
|
||||
<div class="post-reactions" aria-label="Reactions" on:mouseup|stopPropagation on:keydown|stopPropagation>
|
||||
|
@ -12,7 +39,7 @@
|
|||
on:click={() => toggleReaction(reaction)}
|
||||
bind:active={reaction.me}
|
||||
bind:count={reaction.count}
|
||||
disabled={reaction.name.includes('@')}
|
||||
disabled={reaction.name.includes('@') && !$server.capabilities.includes(capabilities.FOREIGN_REACTIONS)}
|
||||
title={reaction.name}
|
||||
label="">
|
||||
{#if reaction.url}
|
||||
|
|
Loading…
Reference in a new issue