diff --git a/ansible/VERSION b/ansible/VERSION index 935ddfd23..80eaafce1 100644 --- a/ansible/VERSION +++ b/ansible/VERSION @@ -1 +1 @@ -v0.7.16 +v0.7.17 diff --git a/docker/prod/docker-compose.yml b/docker/prod/docker-compose.yml index 6c3bccb0b..0f4a9c487 100644 --- a/docker/prod/docker-compose.yml +++ b/docker/prod/docker-compose.yml @@ -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 diff --git a/server/src/version.rs b/server/src/version.rs index 99061416f..180b1dd83 100644 --- a/server/src/version.rs +++ b/server/src/version.rs @@ -1 +1 @@ -pub const VERSION: &str = "v0.7.16"; +pub const VERSION: &str = "v0.7.17"; diff --git a/ui/src/components/post.tsx b/ui/src/components/post.tsx index 5d76808eb..ce737a4e4 100644 --- a/ui/src/components/post.tsx +++ b/ui/src/components/post.tsx @@ -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; commentSort: CommentSortType; + commentViewType: CommentViewType; community: Community; moderators: Array; online: number; @@ -65,6 +67,7 @@ export class Post extends Component { post: null, comments: [], commentSort: CommentSortType.Hot, + commentViewType: CommentViewType.Tree, community: null, moderators: [], online: null, @@ -208,12 +211,12 @@ export class Post extends Component { disabled={this.state.post.locked} /> {this.state.comments.length > 0 && this.sortRadios()} - {this.commentsTree()} - -
- {this.state.comments.length > 0 && this.newComments()} - {this.sidebar()} + {this.state.commentViewType == CommentViewType.Tree && + this.commentsTree()} + {this.state.commentViewType == CommentViewType.Chat && + this.commentsFlat()}
+
{this.sidebar()}
)} @@ -222,79 +225,107 @@ export class Post extends Component { sortRadios() { return ( -
- - - - -
+ <> +
+ + + + +
+
+ + +
+ ); } - newComments() { + commentsFlat() { return ( -
-
-
{i18n.t('recent_comments')}
- -
+
+
); } @@ -318,6 +349,11 @@ export class Post extends Component { i.setState(i.state); } + handleCommentViewTypeChange(i: Post, event: any) { + i.state.commentViewType = Number(event.target.value); + i.setState(i.state); + } + buildCommentsTree(): Array { let map = new Map(); for (let comment of this.state.comments) { diff --git a/ui/src/interfaces.ts b/ui/src/interfaces.ts index 2b4b5e704..1f2813021 100644 --- a/ui/src/interfaces.ts +++ b/ui/src/interfaces.ts @@ -54,6 +54,11 @@ export enum CommentSortType { Old, } +export enum CommentViewType { + Tree, + Chat, +} + export enum ListingType { All, Subscribed, diff --git a/ui/src/version.ts b/ui/src/version.ts index a62e5c1dc..068e42371 100644 --- a/ui/src/version.ts +++ b/ui/src/version.ts @@ -1 +1 @@ -export const version: string = 'v0.7.16'; +export const version: string = 'v0.7.17'; diff --git a/ui/translations/en.json b/ui/translations/en.json index cb4347f1c..59dfa8b42 100644 --- a/ui/translations/en.json +++ b/ui/translations/en.json @@ -177,6 +177,7 @@ "community": "Community", "expand_here": "Expand here", "subscribe_to_communities": "Subscribe to some <1>communities.", + "tree": "Tree", "chat": "Chat", "recent_comments": "Recent Comments", "no_results": "No results.", diff --git a/ui/translations/eu.json b/ui/translations/eu.json index 595ed5d72..0563880da 100644 --- a/ui/translations/eu.json +++ b/ui/translations/eu.json @@ -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}} -rentzat", - "mark_all_as_read": "markatu dena irakurrita bezala", + "inbox": "Sarrera-erretilua", + "inbox_for": "<1>{{user}}(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 -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.imen 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 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, 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 /reddit alternatiboa da, eta <2>fedibertsoan lan egiteko erabiltzen da. <3>Autohospedagarria da, iruzkin-hari eguneratuak ditu, eta txikia da (<4>~80kB). ActivityPub sareko federazioa bide orrian dago. <5><6>Beta bertsio goiztiarra da hau, eta ezaugarri asko hautsita edo desagertuta daude gaur egun. <7>Ezaugarri berriak iradokitzea edo akatsak jakinaraztea <8>hemen.<9> Rust, <11>Actix, <12>Inferno, <13>Typescriptekin egina.", - "logged_in": "Konektatuta zaude.", - "not_logged_in": "Ez zaude konektatuta.", - "site_saved": "Gunea Gordeta.", + "landing": "Lemmy <1>esteka-agregatzailea / reddit-en ordezkoa da, eta <2>fedibertsoan lan egiteko sortua da. <3>Norberak ostatu dezake, iruzkin-hari eguneratuak ditu eta txikia da (<4>~80kB). ActivityPub sareko federazioa bide-orrian dago. <5>Hau <6>beta bertsio goiztiarra da eta funtzionalitate asko hautsita edo egin gabe ditu oraindik. <7>Iradoki itzazu funtzionalitate berriak edo jakinarazi akatsak <8>hemen.<9><10>Rust, <11>Actix, <12>Inferno eta <13>Typescriptekin 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" }