Merge remote-tracking branch 'upstream/master' into add_post_title_to_comments_view

This commit is contained in:
Ernest 2020-07-13 08:45:57 +02:00
commit 9ad0a8825a
8 changed files with 243 additions and 201 deletions

2
ansible/VERSION vendored
View File

@ -1 +1 @@
v0.7.16
v0.7.17

View File

@ -12,7 +12,7 @@ services:
restart: always
lemmy:
image: dessalines/lemmy:v0.7.16
image: dessalines/lemmy:v0.7.17
ports:
- "127.0.0.1:8536:8536"
restart: always

View File

@ -1 +1 @@
pub const VERSION: &str = "v0.7.16";
pub const VERSION: &str = "v0.7.17";

View File

@ -11,6 +11,7 @@ import {
CommentForm as CommentFormI,
CommentResponse,
CommentSortType,
CommentViewType,
CommunityUser,
CommunityResponse,
CommentNode as CommentNodeI,
@ -49,6 +50,7 @@ interface PostState {
post: PostI;
comments: Array<Comment>;
commentSort: CommentSortType;
commentViewType: CommentViewType;
community: Community;
moderators: Array<CommunityUser>;
online: number;
@ -65,6 +67,7 @@ export class Post extends Component<any, PostState> {
post: null,
comments: [],
commentSort: CommentSortType.Hot,
commentViewType: CommentViewType.Tree,
community: null,
moderators: [],
online: null,
@ -208,12 +211,12 @@ export class Post extends Component<any, PostState> {
disabled={this.state.post.locked}
/>
{this.state.comments.length > 0 && this.sortRadios()}
{this.commentsTree()}
</div>
<div class="col-12 col-sm-12 col-md-4">
{this.state.comments.length > 0 && this.newComments()}
{this.sidebar()}
{this.state.commentViewType == CommentViewType.Tree &&
this.commentsTree()}
{this.state.commentViewType == CommentViewType.Chat &&
this.commentsFlat()}
</div>
<div class="col-12 col-sm-12 col-md-4">{this.sidebar()}</div>
</div>
)}
</div>
@ -222,7 +225,8 @@ export class Post extends Component<any, PostState> {
sortRadios() {
return (
<div class="btn-group btn-group-toggle mb-2">
<>
<div class="btn-group btn-group-toggle mr-3 mb-2">
<label
className={`btn btn-sm btn-secondary pointer ${
this.state.commentSort === CommentSortType.Hot && 'active'
@ -276,14 +280,41 @@ export class Post extends Component<any, PostState> {
/>
</label>
</div>
<div class="btn-group btn-group-toggle mb-2">
<label
className={`btn btn-sm btn-secondary pointer ${
this.state.commentViewType === CommentViewType.Tree && 'active'
}`}
>
{i18n.t('tree')}
<input
type="radio"
value={CommentViewType.Tree}
checked={this.state.commentViewType === CommentViewType.Tree}
onChange={linkEvent(this, this.handleCommentViewTypeChange)}
/>
</label>
<label
className={`btn btn-sm btn-secondary pointer ${
this.state.commentViewType === CommentViewType.Chat && 'active'
}`}
>
{i18n.t('chat')}
<input
type="radio"
value={CommentViewType.Chat}
checked={this.state.commentViewType === CommentViewType.Chat}
onChange={linkEvent(this, this.handleCommentViewTypeChange)}
/>
</label>
</div>
</>
);
}
newComments() {
commentsFlat() {
return (
<div class="d-none d-md-block new-comments mb-3 card border-secondary">
<div class="card-body small">
<h6>{i18n.t('recent_comments')}</h6>
<div>
<CommentNodes
nodes={commentsToFlatNodes(this.state.comments)}
noIndent
@ -293,9 +324,9 @@ export class Post extends Component<any, PostState> {
postCreatorId={this.state.post.creator_id}
showContext
enableDownvotes={this.state.siteRes.site.enable_downvotes}
sort={this.state.commentSort}
/>
</div>
</div>
);
}
@ -318,6 +349,11 @@ export class Post extends Component<any, PostState> {
i.setState(i.state);
}
handleCommentViewTypeChange(i: Post, event: any) {
i.state.commentViewType = Number(event.target.value);
i.setState(i.state);
}
buildCommentsTree(): Array<CommentNodeI> {
let map = new Map<number, CommentNodeI>();
for (let comment of this.state.comments) {

View File

@ -54,6 +54,11 @@ export enum CommentSortType {
Old,
}
export enum CommentViewType {
Tree,
Chat,
}
export enum ListingType {
All,
Subscribed,

2
ui/src/version.ts vendored
View File

@ -1 +1 @@
export const version: string = 'v0.7.16';
export const version: string = 'v0.7.17';

View File

@ -177,6 +177,7 @@
"community": "Community",
"expand_here": "Expand here",
"subscribe_to_communities": "Subscribe to some <1>communities</1>.",
"tree": "Tree",
"chat": "Chat",
"recent_comments": "Recent Comments",
"no_results": "No results.",

View File

@ -17,53 +17,53 @@
"mark_as_unread": "markatu ez irakurrita",
"delete": "ezabatu",
"delete_account": "Ezabatu kontua",
"ban": "kaleratu",
"ban_from_site": "kaleratu gunetik",
"unban": "onartu",
"ban": "debekatu",
"ban_from_site": "debekatu gunean",
"unban": "kendu debekua",
"save": "gorde",
"create": "sortu",
"creator": "sortzailea",
"username": "Erabiltzailearen izena",
"username": "Erabiltzaile-izena",
"name": "Izena",
"title": "Izenburua",
"both": "Biak",
"saved": "Gordeta",
"week": "Astea",
"month": "Hilabetea",
"year": "Urtea",
"all": "Dena",
"week": "Astekoak",
"month": "Hilabetekoak",
"year": "Urtekoak",
"all": "Guztiak",
"api": "API",
"unread": "Irakurri gabe",
"replies": "Erantzunak",
"search": "Bilatu",
"sign_up": "Erregistratu",
"sign_up": "Eman izena",
"messages": "Mezuak",
"password": "Pasahitza",
"password_change": "Pasahitza Aldatu",
"new_password": "Pasahitz Berria",
"email": "Posta elektronikoa",
"password_change": "Aldatu pasahitza",
"new_password": "Pasahitz berria",
"email": "Eposta",
"language": "Hizkuntza",
"url": "URL",
"chat": "Txat",
"chat": "Txata",
"your_site": "zure gunea",
"nsfw": "NSFW",
"block_leaving": "Ziur zaude atera nahi duzula?",
"nsfw": "NSFW (eduki hunkigarria)",
"block_leaving": "Ziur al zaude atera nahi duzula?",
"bitcoin": "Bitcoin",
"ethereum": "Ethereum",
"monero": "Monero",
"yes": "bai",
"no": "ez",
"couldnt_find_post": "Ezin izan da post-a aurkitu.",
"couldnt_save_post": "Ezin izan da argitalpena gorde.",
"site_already_exists": "Gunea jada existitzen da.",
"couldnt_find_post": "Ezin izan da bidalketarik aurkitu.",
"couldnt_save_post": "Ezin izan da bidalketa gorde.",
"site_already_exists": "Gunea dagoeneko existitzen da.",
"action": "Ekintza",
"time": "Denbora",
"number_of_points": "Puntu {{count}}",
"number_of_points_plural": "{{count}} Puntu",
"number_of_points_plural": "{{count}} puntu",
"number_of_users": "Erabiltzaile {{count}}",
"number_of_users_plural": "{{count}} Erabiltzaile",
"number_of_subscribers": "Jarraitzaile {{count}}",
"number_of_subscribers_plural": "{{count}} Jarraitzaile",
"number_of_users_plural": "{{count}} erabiltzaile",
"number_of_subscribers": "Harpidetu {{count}}",
"number_of_subscribers_plural": "{{count}} harpidetu",
"invalid_community_name": "Izen baliogabea.",
"click_to_delete_picture": "Egin klik irudia ezabatzeko.",
"picture_deleted": "Irudia ezabatuta.",
@ -97,7 +97,7 @@
"removed": "moderatzaileak ezabatua",
"locked": "blokeatuta",
"number_online": "Erabiltzaile {{count}} konektatuta",
"number_online_plural": "{{count}} Erabiltzaile konektatutak",
"number_online_plural": "{{count}} erabiltzaile konektatuta",
"subscribed": "Harpidetuta",
"prev": "Aurrekoa",
"create_community": "Sortu komunitatea",
@ -125,137 +125,137 @@
"reason": "Arrazoia",
"mark_as_read": "markatu irakurrita gisa",
"deleted": "sortzaileak ezabatua",
"delete_account_confirm": "Ohartarazpena: horrek etengabe ezabatuko ditu zure datu guztiak. Idatzi zure pasahitza baieztatzeko.",
"delete_account_confirm": "Abisua: honek zure datu guztiak betirako ezabatu ditu. Sartu zure pasahitza baieztatzeko.",
"restore": "leheneratu",
"unban_from_site": "gunetik debekua kentzea",
"banned": "kaleratuta",
"banned_users": "Kaleratutako Erabiltzaileak",
"unban_from_site": "kendu debekua gunean",
"banned": "debekatuta",
"banned_users": "Debekatutako erabiltzaileak",
"unsave": "ez gorde",
"email_or_username": "e-Posta edo Erabiltzailea",
"email_or_username": "Eposta edo erabiltzaile-izena",
"category": "Kategoria",
"subscribers": "Jarraitzaileak",
"unsubscribe": "Ez-harpidetu",
"subscribers": "Harpidetuak",
"unsubscribe": "Ezabatu harpidetza",
"subscribe": "Harpidetu",
"sidebar": "Alboko barra",
"sort_type": "Sailkapen mota",
"sort_type": "Ordena-mota",
"hot": "Pil-pilean",
"new": "Berri",
"old": "Zahar",
"top_day": "Eguneko hoberenak",
"top": "Hoberena",
"new": "Berriak",
"old": "Zaharrak",
"top_day": "Gaur pil-pilean",
"top": "Bozkatuenak",
"docs": "Dokumentazioa",
"inbox": "Mezuen sarrera",
"inbox_for": "Sarrera-erretilua <1>{{user}}</1> -rentzat",
"mark_all_as_read": "markatu dena irakurrita bezala",
"inbox": "Sarrera-erretilua",
"inbox_for": "<1>{{user}}</1>(r)en sarrera-erretilua",
"mark_all_as_read": "markatu guztiak irakurrita gisa",
"type": "Mota",
"number_of_communities": "Komunitate {{count}}",
"number_of_communities_plural": "{{count}} komunitate",
"mentions": "Aipamenak",
"reply_sent": "Bidalitako erantzuna",
"message_sent": "Bidalitako mezua",
"overview": "Laburpen",
"reply_sent": "Erantzuna bidali da",
"message_sent": "Mezua bidali da",
"overview": "Laburpena",
"view": "Ikusi",
"logout": "Irten",
"login_sign_up": "Sartu / Kontua Sortu",
"login": "Sartu",
"notifications_error": "Mahaigaineko jakinarazpenak ez daude eskuragarri zure web-nabigatzailean. Probatu Firefox edo Chromerekin.",
"logout": "Itxi saioa",
"login_sign_up": "Hasi saioa / Eman izena",
"login": "Hasi saioa",
"notifications_error": "Mahaigaineko jakinarazpenak ez daude eskuragarri zure web-nabigatzailean. Probatu Firefoxekin edo Chromekin.",
"unread_messages": "Irakurri gabeko mezuak",
"verify_password": "Pasahitza Balioztatu",
"old_password": "Aurreko Pasahitza",
"verify_password": "Balioztatu pasahitza",
"old_password": "Aurreko pasahitza",
"forgot_password": "pasahitza ahaztu dut",
"reset_password_mail_sent": "Mezu elektroniko bat bidali pasahitza berrezartzeko.",
"no_email_setup": "Zerbitzari honek ez du posta elektronikoa behar bezala konfiguratu.",
"matrix_user_id": "Matrix Erabiltzailea",
"private_message_disclaimer": "Ohartarazpena: Lemmy-en dauden mezu pribatuak ez dira seguruak. Mesedez, sortu kontu bat <1>Riot.im</1> -en mezu seguruetarako.",
"send_notifications_to_email": "Bidali jakinarazpenak posta elektronikora",
"optional": "Ez-ohikoa",
"browser_default": "Nabigatzaile Lehenetsia",
"downvotes_disabled": "Puntuazio negatiboak desgaituta daude",
"enable_downvotes": "Kontrako botoak gaitu",
"upvote": "Aldeko botoa eman",
"downvote": "Kontrako botoa eman",
"number_of_downvotes": "Kontrako boto {{count}}",
"number_of_downvotes_plural": "{{count}} Kontrako botoak",
"number_of_upvotes": "Aldeko boto {{count}}",
"number_of_upvotes_plural": "{{count}} Aldeko botoak",
"open_registration": "Erregistro Irekia",
"registration_closed": "Erregistroa itxita",
"enable_nsfw": "NSFW gaitu",
"reset_password_mail_sent": "Eposta bat bidali da zure pasahitza berrezarri dezazun.",
"no_email_setup": "Zerbitzari honek ez du eposta ondo konfiguraturik.",
"matrix_user_id": "Matrix erabiltzailea",
"private_message_disclaimer": "Abisua: Lemmyko mezu pribatuak ez dira seguruak. Mesedez, sortu kontu bat <1>Riot.im</1>en mezu seguruak trukatzeko.",
"send_notifications_to_email": "Bidali jakinarazpenak epostara",
"optional": "Hautazkoa",
"browser_default": "Nabigatzaileko lehenetsia",
"downvotes_disabled": "Kontrako bozkak desgaituta",
"enable_downvotes": "Gaitu kontrako bozkak",
"upvote": "Alde bozkatu",
"downvote": "Kontra bozkatu",
"number_of_downvotes": "Kontrako bozka {{count}}",
"number_of_downvotes_plural": "{{count}} kontrako bozka",
"number_of_upvotes": "Aldeko bozka {{count}}",
"number_of_upvotes_plural": "{{count}} aldeko bozka",
"open_registration": "Izen-ematea irekia",
"registration_closed": "Izen-ematea itxira",
"enable_nsfw": "Gaitu NSFW (eduki hunkigarria)",
"body": "Gorputza",
"copy_suggested_title": "Kopiatu iradokitako izenburua: {{title}}",
"copy_suggested_title": "kopiatu iradokitako izenburua: {{title}}",
"community": "Komunitatea",
"expand_here": "Hedatu hemen",
"subscribe_to_communities": "Harpidetu zaitez <1>komunitate</1> batzuetara.",
"recent_comments": "Duela gutxiko Iruzkinak",
"recent_comments": "Iruzkin berrienak",
"select_a_community": "Aukeratu komunitate bat",
"no_results": "Emaitzik gabe.",
"setup": "Instalazioa",
"lemmy_instance_setup": "Lemmy Instantziaren Konfigurazioa",
"setup_admin": "Gunearen Administratzailea Konfiguratu",
"no_results": "Ez dago emaitzarik.",
"setup": "Ezarpenak",
"lemmy_instance_setup": "Lemmy instantziaren ezarpena",
"setup_admin": "Ezarri gunearen administratzailea",
"modified": "aldatuta",
"show_nsfw": "Erakutsi NSFW edukia",
"expires": "Iraungitzen",
"theme": "Gaia",
"show_nsfw": "Erakutsi eduki hunkigarria (NSFW)",
"expires": "Noiz iraungitzen da:",
"theme": "Itxura",
"sponsors": "Babesleak",
"sponsors_of_lemmy": "Lemmyren Babesleak",
"sponsor_message": "Lemmy software librea da, <1>kode-irekia<1/>, publizitaterik, monetizaziorik edo arrisku kapitalik gabea, inoiz ez. Zuen dohainek zuzenean laguntzen dute proiektuaren lanaldi osoko garapena. Eskerrik asko honako pertsona hauei:",
"support_on_patreon": "Patreon-en lagundu",
"support_on_liberapay": "Liberpay-en lagundu",
"support_on_open_collective": "OpenCollective-n lagundu",
"donate_to_lemmy": "Dohaintza bat eman Lemmyri",
"donate": "Dohaintza bat egin",
"general_sponsors": "Lemmyri 10 eta 39 dolar artean emateko konpromisoa hartu zutenak dira Babesle Nagusiak.",
"silver_sponsors": "Zilarrezko Babesleak dira Lemmyri 40 dolar eman zizkiotenak.",
"crypto": "Kripto",
"sponsors_of_lemmy": "Lemmyren babesleak",
"sponsor_message": "Lemmy software librea da, <1>kode irekia</1>, publizitaterik, monetizaziorik eta arrisku kapitalik gabea, inoiz ez. Zuen dohaintzek zuzenean laguntzen dute proiektuaren lanaldi osoko garapena. Eskerrik asko honako pertsona hauei:",
"support_on_patreon": "Patreon bitartez lagundu",
"support_on_liberapay": "Liberpay bitartez lagundu",
"support_on_open_collective": "OpenCollective bitartez lagundu",
"donate_to_lemmy": "Egin dohaintza bat Lemmyri",
"donate": "Dohaintza egin",
"general_sponsors": "Babesle orokorrak Lemmyri 10 eta 39 dolar artean eman zizkiotenak dira.",
"silver_sponsors": "Zilarrezko babesleak Lemmyri 40 dolar eman zizkiotenak dira.",
"crypto": "Kriptomonetak",
"code": "Kodea",
"joined": "Batuta",
"by": "egilea",
"to": "norentzako",
"from": "hemendik",
"to": "nori",
"from": "nork",
"transfer_community": "transferentzia-komunitatea",
"transfer_site": "transferentzia-gunea",
"are_you_sure": "Ziur ahal zaude?",
"are_you_sure": "ziur al zaude?",
"powered_by": "Egilea",
"landing": "Lemmy <1>lotura-agregatzailea</1> /reddit alternatiboa da, eta <2>fedibertsoan</2> lan egiteko erabiltzen da. <3></3>Autohospedagarria da, iruzkin-hari eguneratuak ditu, eta txikia da (<4>~80kB</4>). ActivityPub sareko federazioa bide orrian dago. <5></5><6>Beta bertsio goiztiarra</6> da hau, eta ezaugarri asko hautsita edo desagertuta daude gaur egun. <7></7>Ezaugarri berriak iradokitzea edo akatsak jakinaraztea <8>hemen.</8><9></9> Rust, <11>Actix</11>, <12>Inferno</12>, <13>Typescriptekin egina</13>.",
"logged_in": "Konektatuta zaude.",
"not_logged_in": "Ez zaude konektatuta.",
"site_saved": "Gunea Gordeta.",
"landing": "Lemmy <1>esteka-agregatzailea</1> / reddit-en ordezkoa da, eta <2>fedibertsoan</2> lan egiteko sortua da. <3></3>Norberak ostatu dezake, iruzkin-hari eguneratuak ditu eta txikia da (<4>~80kB</4>). ActivityPub sareko federazioa bide-orrian dago. <5></5>Hau <6>beta bertsio goiztiarra</6> da eta funtzionalitate asko hautsita edo egin gabe ditu oraindik. <7></7>Iradoki itzazu funtzionalitate berriak edo jakinarazi akatsak <8>hemen</8>.<9></9><10>Rust</10>, <11>Actix</11>, <12>Inferno</12> eta <13>Typescript</13>ekin egina.",
"logged_in": "Saioa hasi duzu.",
"not_logged_in": "Ez duzu saiorik hasi.",
"site_saved": "Gunea gorde da.",
"community_ban": "Komunitate honetan sartzea debekatu dizute.",
"site_ban": "Gune honetan sartzea debekatu dizute",
"couldnt_create_comment": "Ezin izan da iruzkinik egin.",
"couldnt_like_comment": "Ezin izan zaio iruzkin bati like bat eman.",
"couldnt_update_comment": "Ezin izan zen iruzkina eguneratu.",
"couldnt_save_comment": "Ezin izan zen iruzkina gorde.",
"couldnt_get_comments": "Ezin izan ziren iruzkinak lortu.",
"no_comment_edit_allowed": "Ezin da iruzkina editatu.",
"no_post_edit_allowed": "Ezin da post-a editatu.",
"no_community_edit_allowed": "Ezin da komunitatea editatu.",
"couldnt_find_community": "Ezin izan da komunitatea aurkitu.",
"couldnt_update_community": "Ezin izan zen komunitatea eguneratu.",
"community_already_exists": "Komunitatea existitzen da jada.",
"community_moderator_already_exists": "Komunitatearen moderatzailea existitzen da dagoeneko.",
"community_follower_already_exists": "Jarraitzaileen komunitatea existitzen da dagoeneko.",
"community_user_already_banned": "Komunitatearen erabiltzaile hau debekatuta dago jada.",
"couldnt_create_post": "Argitalpena ezin izan da sortu.",
"post_title_too_long": "Argitalpenaren izenburua luzeegia da.",
"couldnt_like_post": "Ezin izan zaio like bat eman postari.",
"couldnt_get_posts": "Ezin izan ziren postak lortu",
"couldnt_update_post": "Ezin izan zen post-a eguneratu",
"couldnt_create_comment": "Ezin izan da iruzkina sortu.",
"couldnt_like_comment": "Ezin izan da iruzkinari datsegit eman.",
"couldnt_update_comment": "Ezin izan da iruzkina eguneratu.",
"couldnt_save_comment": "Ezin izan da iruzkina gorde.",
"couldnt_get_comments": "Ezin izan da iruzkinik lortu.",
"no_comment_edit_allowed": "Ezin duzu iruzkina editatu.",
"no_post_edit_allowed": "Ezin duzu bidalketa editatu.",
"no_community_edit_allowed": "Ezin duzu komunitatea editatu.",
"couldnt_find_community": "Ezin izan da komunitaterik aurkitu.",
"couldnt_update_community": "Ezin izan da komunitatea eguneratu.",
"community_already_exists": "Komunitate hori dagoeneko existitzen da.",
"community_moderator_already_exists": "Komunitateko moderatzaile hori dagoeneko existitzen da.",
"community_follower_already_exists": "Komunitateko jarraitzaile hori dagoeneko existitzen da.",
"community_user_already_banned": "Komunitateko erabiltzaile hau dagoeneko debekatuta dago.",
"couldnt_create_post": "Ezin izan da bidalketa sortu.",
"post_title_too_long": "Bidalketaren izenburua luzeegia da.",
"couldnt_like_post": "Ezin izan da bidalketari datsegit eman.",
"couldnt_get_posts": "Ezin izan da bidalketa lortu",
"couldnt_update_post": "Ezin izan da bidalketa eguneratu",
"no_slurs": "Irainik gabe.",
"not_an_admin": "Ez da administratzailea.",
"couldnt_update_site": "Ezinezkoa lekua berritzea.",
"couldnt_find_that_username_or_email": "Ezin izan da aurkitu erabiltzaile-izen edo helbide elektroniko hori.",
"password_incorrect": "Pasahitz desegokia.",
"not_an_admin": "Ez zara administratzailea.",
"couldnt_update_site": "Ezin izan da gunea eguneratu.",
"couldnt_find_that_username_or_email": "Ezin izan da aurkitu erabiltzaile-izen edo eposta hori.",
"password_incorrect": "Pasahitz okerra.",
"passwords_dont_match": "Pasahitzak ez dira berdinak.",
"admin_already_created": "Barkatu, badago administratzaile bat dagoeneko.",
"user_already_exists": "Erabiltzailea existitzen da dagoeneko.",
"email_already_exists": "Posta helbide hau beste norbaitek erabiltzen du.",
"couldnt_update_user": "Ezin izan zen erabiltzailea eguneratu.",
"system_err_login": "Sistemaren errorea. Saiatu saioa ixten eta berriro sartzen.",
"couldnt_create_private_message": "Ezinezkoa izan da mezu pribatua sortzea.",
"no_private_message_edit_allowed": "Ezin da mezu pribaturik editatu.",
"couldnt_update_private_message": "Ezinezkoa izan da mezu pribatua berritzea.",
"emoji_picker": "Emoji Hautagailua",
"admin_already_created": "Barkatu, dagoeneko badago administratzaile bat.",
"user_already_exists": "Erabiltzaile hori dagoeneko existitzen da.",
"email_already_exists": "Eposta hori dagoeneko existitzen da.",
"couldnt_update_user": "Ezin izan da erabiltzailea eguneratu.",
"system_err_login": "Sistemaren errorea. Saiatu saioa ixten eta berriz hasten.",
"couldnt_create_private_message": "Ezin izan da mezu pribatu hori sortu.",
"no_private_message_edit_allowed": "Ezin duzu mezu pribaturik editatu.",
"couldnt_update_private_message": "Ezin izan da mezu pribatu hori eguneratu.",
"emoji_picker": "Emoji hautagailua",
"invalid_username": "Erabiltzaile-izen baliogabea.",
"what_is": "Zer da"
}