creator_actor_id -> Text,
creator_local -> Bool,
creator_name -> Varchar,
- creator_avatar -> Nullable<Text>,
creator_published -> Timestamp,
+ creator_avatar -> Nullable<Text>,
score -> BigInt,
upvotes -> BigInt,
downvotes -> BigInt,
creator_actor_id -> Text,
creator_local -> Bool,
creator_name -> Varchar,
- creator_avatar -> Nullable<Text>,
creator_published -> Timestamp,
+ creator_avatar -> Nullable<Text>,
score -> BigInt,
upvotes -> BigInt,
downvotes -> BigInt,
pub creator_actor_id: String,
pub creator_local: bool,
pub creator_name: String,
- pub creator_avatar: Option<String>,
pub creator_published: chrono::NaiveDateTime,
+ pub creator_avatar: Option<String>,
pub score: i64,
pub upvotes: i64,
pub downvotes: i64,
import { i18n } from '../i18next';
interface CakeDayProps {
- creator_name: string;
- is_post_creator?: boolean;
+ creatorName: string;
}
export class CakeDay extends Component<CakeDayProps, any> {
render() {
- const { creator_name, is_post_creator } = this.props;
-
return (
<div
- className={`mr-lg-2 d-inline-block unselectable pointer${
- is_post_creator ? ' mx-2' : ''
- }`}
- data-tippy-content={this.cakeDayTippy(creator_name)}
+ className={`mx-2 d-inline-block unselectable pointer`}
+ data-tippy-content={this.cakeDayTippy()}
>
<svg class="icon icon-inline">
<use xlinkHref="#icon-cake"></use>
);
}
- cakeDayTippy(creator_name: string): string {
- return i18n.t('cake_day_info', { creator_name });
+ cakeDayTippy(): string {
+ return i18n.t('cake_day_info', { creator_name: this.props.creatorName });
}
}
isMod,
setupTippy,
colorList,
- isCakeDay,
} from '../utils';
import moment from 'moment';
import { MomentTime } from './moment-time';
import { CommentNodes } from './comment-nodes';
import { UserListing } from './user-listing';
import { i18n } from '../i18next';
-import { CakeDay } from './cake-day';
interface CommentNodeState {
showReply: boolean;
id: node.comment.creator_id,
local: node.comment.creator_local,
actor_id: node.comment.creator_actor_id,
+ published: node.comment.creator_published,
}}
/>
</span>
- {isCakeDay(node.comment.creator_published) && (
- <CakeDay creator_name={node.comment.creator_name} />
- )}
-
{this.isMod && (
<div className="badge badge-light d-none d-sm-inline mr-2">
{i18n.t('mod')}
setupTippy,
hostname,
previewLines,
- isCakeDay,
} from '../utils';
import { i18n } from '../i18next';
-import { CakeDay } from './cake-day';
interface PostListingState {
showEdit: boolean;
id: post.creator_id,
local: post.creator_local,
actor_id: post.creator_actor_id,
+ published: post.creator_published,
}}
/>
- {isCakeDay(post.creator_published) && (
- <CakeDay creator_name={post.creator_name} is_post_creator />
- )}
-
{this.isMod && (
<span className="mx-1 badge badge-light">
{i18n.t('mod')}
import { Component } from 'inferno';
import { Link } from 'inferno-router';
import { UserView } from '../interfaces';
-import { pictrsAvatarThumbnail, showAvatars, hostname } from '../utils';
+import {
+ pictrsAvatarThumbnail,
+ showAvatars,
+ hostname,
+ isCakeDay,
+} from '../utils';
+import { CakeDay } from './cake-day';
interface UserOther {
name: string;
avatar?: string;
local?: boolean;
actor_id?: string;
+ published?: string;
}
interface UserListingProps {
}
return (
- <Link className="text-body font-weight-bold" to={link}>
- {user.avatar && showAvatars() && (
- <img
- height="32"
- width="32"
- src={pictrsAvatarThumbnail(user.avatar)}
- class="rounded-circle mr-2"
- />
- )}
- <span>{name_}</span>
- </Link>
+ <>
+ <Link className="text-body font-weight-bold" to={link}>
+ {user.avatar && showAvatars() && (
+ <img
+ height="32"
+ width="32"
+ src={pictrsAvatarThumbnail(user.avatar)}
+ class="rounded-circle mr-2"
+ />
+ )}
+ <span>{name_}</span>
+ </Link>
+
+ {isCakeDay(user.published) && <CakeDay creatorName={name_} />}
+ </>
);
}
}
);
}
-export function isCakeDay(creator_published: string): boolean {
+export function isCakeDay(published: string): boolean {
// moment(undefined) or moment.utc(undefined) returns the current date/time
// moment(null) or moment.utc(null) returns null
- const userCreationDate = moment.utc(creator_published || null).local();
+ const userCreationDate = moment.utc(published || null).local();
const currentDate = moment(new Date());
return (