Π‘ΡΠ΄Ρ ΠΏΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, AudioContent
Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅ΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π²ΡΡΠΎΡΡ 3, Π½ΠΎ ΠΏΠΎΡ
ΠΎΠΆΠ΅, ΡΡΠΎ FileContent
ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π΅Π³ΠΎ ΡΠ°Π²Π½ΡΠΌ 6. ΠΠΌΠ΅Π΅Ρ Π»ΠΈ ΡΠΌΡΡΠ» ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ FileContent, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π½ΡΠ΅ Π³ΡΠ°Π½ΠΈΡΡ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ²? ΡΠΈΠΏΡ? ΠΠ°ΠΆΠ΅ΡΡΡ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΡ Π»ΠΎΠ³ΠΈΠΊΡ Π² FileContent.tsx, Π½ΠΎ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ Π»ΡΡΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ [mime-type]Content.tsx
. ΠΠ°ΠΊ Π±Ρ Ρ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π»? ΠΠ·Π²ΠΈΠ½ΠΈΡΠ΅, Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΠΊΠ°ΠΊ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ FileContent
ΠΈ AudioContent
.
Π Π΄Π°. ΠΡΠΎ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π³Π»ΡΠΏΠΎ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ ΠΌΠΎΡ Π²ΠΈΠ½Π°. AudioContent Π±ΡΠ» POC, ΠΊΠΎΡΠΎΡΡΠΉ Ρ Π½Π°ΠΏΠΈΡΠ°Π», ΠΊΠΎΡΠΎΡΡΠΉ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π½Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ°Π»ΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π½Π° master, Π½ΠΎ ΠΌΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΠ»ΠΈΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ².
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ FileContent ΠΏΠΎ ΡΡΡΠ΅ΡΡΠ²Ρ ΠΎΠ±Π΅ΡΡΡΠ²Π°Π΅Ρ AudioContent, ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Ρ ΠΏΠΎΠ»Π΅ mimetype Π³ΠΈΠΏΠ΅ΡΡΠ°ΠΉΠ»Π°, Π° Π·Π°ΡΠ΅ΠΌ Π²ΡΠ±ΠΈΡΠ°Ρ ΡΠΈΠΏ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ° Π½Π° Π΅Π³ΠΎ ΠΎΡΠ½ΠΎΠ²Π΅ (ΡΠΌ. Https://github.com/automerge/pushpin/blob/7b1fb02912198c525bf080edd5d14d48e538b729/src/renderer/renderer content-types / files / FileContent.tsx # L72, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ). ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΠΎΠ½ Π²ΡΠ΅Π³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΠ±Π΅ΡΡΠΊΡ FileContent minWidth.
ΠΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠΎ Π½Π΅ΡΠ»ΠΎΠΆΠ½ΠΎ, Π½ΠΎ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΠΎ, ΠΈ Ρ Π½Π΅ ΡΠ±Π΅Π΄ΠΈΠ» ΡΠ΅Π±Ρ, ΡΡΠΎ ΠΊΡΠΎ-ΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π½Π΅ Π΄ΠΎΡΠ΅Π» Π΄ΠΎ ΡΡΠΎΠ³ΠΎ ... ΠΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ², Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΡΠΎ, Π·Π°ΠΊΠ»ΡΡΠ°Π»ΡΡ Π±Ρ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ / Π²ΡΠ±Π΅ΡΠΈΡΠ΅ Π±ΠΎΠ»ΡΡΠΈΠΉ Π½Π°Π±ΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΡΡΠΎΠ±Ρ ΠΎΠ½ Π·Π°ΠΏΠΎΠ»Π½ΡΠ» ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ? ΠΡΠ»ΡΠ½ΠΈΡΠ΅ΡΡΠ²ΠΎ, Ρ Π·Π½Π°Ρ, Π½ΠΎ Ρ Ρ ΠΎΡΡ Π½Π°ΡΠ°ΡΡ ΡΡΠ°Π½ΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΠ΅ΡΡ Π² Π°ΡΠ΄ΠΈΠΎΡΠ°ΠΉΠ»Π΅, ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΌΡ ΡΡΠ°Π½ΡΠ»ΠΈΡΡΠ΅ΠΌ Π½Π°Π±ΠΎΡ Π²ΡΠ±ΡΠ°Π½Π½ΡΡ ΠΊΠ°ΡΡ Π½Π° Π΄ΠΎΡΠΊΠ΅, ΡΡΠΎΠ±Ρ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ Π²ΠΈΠ΄Π΅ΡΡ, Π³Π΄Π΅ Π΄ΡΡΠ³ΠΈΠ΅ Π»ΡΠ΄ΠΈ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π½Π° ΡΡΠ΅ΠΊΠ΅ (ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π²ΠΎΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ΄ΠΊΠ°ΡΡΠ°?)
Π‘ΡΠ°ΡΡΠ»ΠΈΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΠΎΠΉ ΠΈΠ· ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² (ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π²ΡΡΠΎΡΡ ΠΈΠ»ΠΈ ΡΠ»ΡΡΡΠΈΡΡ AudioContent) ΠΈ ΠΏΠΎΠΌΠΎΡΡ Ρ Π»ΡΠ±ΡΠΌ ΠΈΠ· Π½ΠΈΡ , Π΅ΡΠ»ΠΈ Π²Ρ ΡΡΠ²ΡΡΠ²ΡΠ΅ΡΠ΅, ΡΡΠΎ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. Π Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Ρ ΠΎΡΠΎΡΠΈΠΉ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ.
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ / ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΉ - ΡΡΠΎ ΠΊΡΡΡΠΎ, Π½Π°Π΄ ΡΠ΅ΠΌ ΡΡΠΎΠΈΡ ΠΏΠΎΡΠ°Π±ΠΎΡΠ°ΡΡ! Π ΠΊΠ°ΠΊΠΈΡ ΡΠ°ΠΉΠ»Π°Ρ Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΊΠ°ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ Π²ΡΠ±ΠΎΡΠ° ΠΊΠ°ΡΡΡ?
ΠΠΎΠΎΠΎ, ΠΊΠ°ΠΊ Π±Ρ Π²Ρ ΠΎΡΠ½ΠΎΡΠΈΠ»ΠΈΡΡ ΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ Π² ΡΡΠΈΠ»Π΅ soundcloud, ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΡΠΌ ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² Π°ΡΠ΄ΠΈΠΎ? ΠΠ»ΠΈ ΡΡΠΎ Π΄ΡΠ±Π»ΠΈΡΡΠ΅Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊΠΎΠ²? Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π² ΡΡΠΈΠ»Π΅, ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ Π΄Π»Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΡΠΎΠΌΡ (ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌ Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°ΠΌΠΈ XY, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅Π³ΠΈ instagram), ΠΌΠΎΠ³ΡΡ ΡΠΏΠΎΡΠΎΠ±ΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌ Π²ΠΈΠ΄Π°ΠΌ ΠΌΠ΅Π΄ΠΈΠ°-Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ².
Π― Π±Ρ ΡΠ΅ΡΡΠΎΠ²ΡΠΊΠΈ ΡΡΠ²ΡΡΠ²ΠΎΠ²Π°Π» ΡΠ΅Π±Ρ
Π§ΡΠΎΠ±Ρ ΡΡΠ°Π½ΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π½ΠΈΡ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ Β«ΠΡΠΈΡΡΡΡΡΠ²ΠΈΠ΅Β», ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΡΠ°Π½ΡΠ»ΠΈΡΡΠ΅Ρ Π²Π°Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠΈΠΏ JSON Π²Π°ΡΠΈΠΌ ΠΏΠ°ΡΡΠ½Π΅ΡΠ°ΠΌ. Π BoardCard Π²Ρ ΡΡΠ°Π½ΡΠ»ΠΈΡΡΠ΅ΡΠ΅ ΡΠ²Π΅Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ Π²ΡΠ±ΠΎΡΠ° ΡΠ²ΠΎΠΈΠΌ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌ. Π― Π·Π½Π°Ρ, ΡΡΠΎ ΡΡΠΎΡ ΠΊΠΎΠ΄ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ°Π½Π½ΡΠΉ, Π½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° usePresence Π½Π° https://github.com/automerge/pushpin/blob/73193adc907b3c7c109b5f14453f9a838469f02b/src/renderer/components/content-types/board.xBoardCoard
ΠΠΎΠ΄ Β«ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌΒ» Π²Ρ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΠ΅ Π½ΠΎΠ²ΡΠΉ ΡΠΈΠΏ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, audioComments
) Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ { comment: string, time: number, author: Contact}
ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ hypermergeUrl
ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π°ΡΠ΄ΠΈΠΎ? ΠΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ ΠΌΠ°ΡΡΠΈΠ² { comment: string, time: number, author: Contact}
ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»Π΅Π½ ΠΊ ΡΠ°ΠΌΠΎΠΌΡ AudioContent
? ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ JSON ΠΊ Π³ΠΈΠΏΠ΅ΡΡΠ°ΠΉΠ»Ρ? ΠΠ·Π²ΠΈΠ½ΠΈΡΠ΅, Ρ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΈΠ·ΡΡΠ°Ρ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΡΠ° Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ°.
Π― ΠΈΠΌΠ΅Ρ Π² Π²ΠΈΠ΄Ρ, ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈ ΠΌΡ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ThreadContent, TextContent, ImageContent ΠΈ Ρ. Π.
(PS: Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ ΡΠΈΡΠ°Π»ΠΈ ARCHITECTURE.md, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΊΠΎΡΠΈΡΡ Π²Π°ΡΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π·Π° ΠΊΡΠ»ΠΈΡΠ°ΠΌΠΈ.)
(ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΠΌ ΡΡΠΎ Π² ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ»Π°Π±ΠΈΠ½Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ ΡΡΠ»ΠΈ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ ΠΎΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ)
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
Π― ΠΈΠΌΠ΅Ρ Π² Π²ΠΈΠ΄Ρ, ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈ ΠΌΡ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ThreadContent, TextContent, ImageContent ΠΈ Ρ. Π.
(PS: Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ ΡΠΈΡΠ°Π»ΠΈ ARCHITECTURE.md, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΊΠΎΡΠΈΡΡ Π²Π°ΡΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π·Π° ΠΊΡΠ»ΠΈΡΠ°ΠΌΠΈ.)