
Језик 🇲🇪 Српски (Црна Гора)
Документација
Почетак рада
Коришћење
Аутентификација
Конфигурација
FastComments Android Library
Ово је званична Android библиотека за FastComments.
Видгети за коментаре FastComments за Android
Репозиторијум
Карактеристике 
- 🔄 Коментарисање уживо са ажурирањима у реалном времену
- 📱 Нативни Android UI елементи
- 🧵 Дискусије у нитима са одговорима
- 👤 Безбедна SSO аутентификација
- 👍 Систем гласања са прилагодљивим стиловима
- 🔔 Корисничка обавештења и присуство
- 🔍 Могућности модерирања коментара
- 📱 Интеграција друштвеног фида
- ♾️ Бесконачно скроловање са пагинацијом
- 🎨 Свеобухватно прилагођавање тема
Инсталација 
Додајте FastComments SDK у build.gradle.kts фајл ваше апликације:
dependencies {
implementation("com.fastcomments:sdk:0.0.1")
}
Проверите да ли имате Repsy репозиторијум у settings.gradle.kts вашег пројекта:
dependencyResolutionManagement {
repositories {
maven {
url = uri("https://repo.repsy.io/mvn/winrid/fastcomments")
}
// други репозиторијуми...
}
}
Основно коришћење 
1. Додајте FastCommentsView у ваш изглед
<com.fastcomments.sdk.FastCommentsView
android:id="@+id/commentsView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
2. Иницијализујте и конфигуришите SDK
// Конфигуришите SDK
val config = CommentWidgetConfig(
"your-tenant-id",
"page-url-id",
"Page Title",
"yourdomain.com",
"Site Name"
)
// Додатне опције конфигурације
config.voteStyle = VoteStyle.UpDown // или VoteStyle.Heart
config.enableInfiniteScrolling = true
config.hasDarkBackground = true // за подршку тамне теме
// Иницијализујте SDK
val sdk = FastCommentsSDK(config)
// Пронађите приказ коментара у вашем изгледу
val commentsView = findViewById<FastCommentsView>(R.id.commentsView)
// Поставите инстанцу SDK-а за приказ
commentsView.setSDK(sdk)
// Учитајте коментаре
commentsView.load()
Сигурна SSO аутентификација 
Имплементирајте безбедну аутентификацију за ваше кориснике:
// Креирајте корисничке податке (по могућности на вашем серверу)
val userData = SecureSSOUserData(
"user-id",
"user@example.com",
"User Name",
"https://path-to-avatar.jpg"
)
// Генеришите SSO токен (то би требало да се ради на серверу!)
val sso = FastCommentsSSO.createSecure("YOUR_API_KEY", userData)
val token = sso.prepareToSend()
// Додајте у конфигурацију
config.sso = token
Интеграција фида 
Прикажите фид у стилу друштвених мрежа са коментарима:
// Конфигуришите SDK
CommentWidgetConfig config = new CommentWidgetConfig();
config.tenantId = "your-tenant-id";
config.urlId = "page-url-id";
// Иницијализујте Feed SDK
FastCommentsFeedSDK feedSDK = new FastCommentsFeedSDK(config);
// Подесите приказ фида
FastCommentsFeedView feedView = findViewById(R.id.feedView);
feedView.setSDK(feedSDK);
// Поставите слушача за интеракције
feedView.setFeedViewInteractionListener(new FastCommentsFeedView.OnFeedViewInteractionListener() {
@Override
public void onFeedLoaded(List<FeedPost> posts) {
// Фид је успјешно учитан
}
@Override
public void onFeedError(String errorMessage) {
// Обрадите грешке
}
@Override
public void onPostSelected(FeedPost post) {
// Корисник је изабрао пост
}
@Override
public void onCommentsRequested(FeedPost post) {
// Прикажите коментаре за пост
CommentsDialog dialog = new CommentsDialog(context, post, feedSDK);
dialog.show();
}
});
// Учитајте фид
feedView.load();
Интеграција уживо ћаскања 
Додајте интерфејс за ћаскање у реалном времену у вашу апликацију:
// Додајте LiveChatView у ваш XML распоред
// <com.fastcomments.sdk.LiveChatView
// android:id="@+id/liveChatView"
// android:layout_width="match_parent"
// android:layout_height="match_parent" />
// Креирајте конфигурацију за SDK
val config = CommentWidgetConfig().apply {
tenantId = "your-tenant-id"
urlId = "chat-room-identifier"
pageTitle = "Chat Room Name"
}
LiveChatView.setupLiveChatConfig(config)
// Опционо: Додајте аутентификацију корисника
val userData = SimpleSSOUserData(
"User Name",
"user@example.com",
"https://path-to-avatar.jpg"
)
val sso = FastCommentsSSO(userData)
config.sso = sso.prepareToSend()
// Иницијализујте SDK
val sdk = FastCommentsSDK().configure(config)
// Подесите LiveChatView
val liveChatView = findViewById<LiveChatView>(R.id.liveChatView)
liveChatView.setSDK(sdk)
liveChatView.load()
// Не заборавите руковање животним циклусом
override fun onResume() {
super.onResume()
sdk.refreshLiveEvents()
}
override fun onDestroy() {
super.onDestroy()
sdk.cleanup()
}
Примери пројеката 
Погледајте ове демо имплементације:
- Основни пример коментара
- Безбедна SSO имплементација
- Пример интеграције фида
- Пример ћаскања уживо
- Пример дијалога за коментаре
Опције конфигурације 
SDK pruža mnogo opcija konfiguracije putem klase CommentWidgetConfig:
| Option | Description |
|---|---|
tenantId |
ID vašeg FastComments naloga |
urlId |
ID koji predstavlja trenutnu stranicu |
sso |
SSO token za autentifikaciju |
allowAnon |
Dozvoli anonimno komentarisanje |
voteStyle |
Stil glasanja: UpDown ili Heart |
hideAvatars |
Sakrij korisničke avatare |
hasDarkBackground |
Označava tamni režim |
customCSS |
Prilagođeni CSS stilovi |
enableInfiniteScrolling |
Omogući beskonačno skrolovanje |
readonly |
Onemogući komentarisanje, ali prikaži komentare |
disableVoting |
Onemogući glasanje |
disableLiveCommenting |
Onemogući ažuriranja u realnom vremenu |
Свеобухватно прилагођавање теме 
Сва дугмад и елементи корисничког интерфејса у FastComments SDK-у су прилагодљиви темом. Користите FastCommentsTheme.Builder за потпуну контролу брендирања ваше апликације.
Програмско прилагођавање теме (Препоручено)
val theme = FastCommentsTheme.Builder()
// Акционa дугмад: Пошаљи, гласај, мени, лајк/пошаљи дугмад
.setActionButtonColor(Color.parseColor("#FF1976D2"))
// Дугмад за одговор: Дугмад за одговор на коментар
.setReplyButtonColor(Color.parseColor("#FF4CAF50"))
// Прекидачка дугмад: Дугмад за приказ/сакривање одговора
.setToggleRepliesButtonColor(Color.parseColor("#FFFF5722"))
// Дугмад 'Учитај више': Дугмад за пагинацију
.setLoadMoreButtonTextColor(Color.parseColor("#FF9C27B0"))
.setPrimaryColor(Color.parseColor("#FF6200EE"))
.setLinkColor(Color.parseColor("#FF1976D2"))
.setDialogHeaderBackgroundColor(Color.parseColor("#FF333333"))
.build()
// Примени тему
sdk.setTheme(theme)
Брзо прилагођавање боја
Преопишите ресурсе боја у вашем colors.xml за једноставно брендирање:
<!-- У res/values/colors.xml ваше апликације -->
<resources>
<!-- Промените све примарне елементе корисничког интерфејса -->
<color name="primary">#FF1976D2</color>
<!-- Или прилагодите специфичне типове дугмади -->
<color name="fastcomments_action_button_color">#FF1976D2</color>
<color name="fastcomments_reply_button_color">#FF4CAF50</color>
<color name="fastcomments_toggle_replies_button_color">#FFFF5722</color>
<color name="fastcomments_load_more_button_text_color">#FF9C27B0</color>
</resources>
Обухват тематизованих дугмади
Свако дугме у SDK-у подржава прилагођавање теме:
- Дугмад за слање, дугмад за гласање, дугмад менија, дугмад за одговор
- Дугмад за приказ/сакривање одговора, дугмад 'Учитај више'
- Акциона дугмад у фиду (лајк, коментар, дељење)
- Дугмад у дијалогу (потврди, откажи, сачувај)
- Динамичка дугмад задатака у постовима фида
За детаљну документацију о тематизацији, погледајте THEMING.md.
Управљање меморијом 
Спречавање цурења меморије
Да бисте спречили цурење меморије при коришћењу FastComments погледа у Activity-има или Fragment-има, увек позовите cleanup() када поглед више није потребан:
У Activity-има:
@Override
protected void onDestroy() {
super.onDestroy();
// Очистите FastComments погледе да бисте спречили цурење меморије
if (feedView != null) {
feedView.cleanup();
}
if (commentsView != null) {
commentsView.cleanup();
}
}
У Fragment-има:
@Override
public void onDestroyView() {
super.onDestroyView();
// Очистите FastComments погледе када се поглед фрагмента уништи
if (feedView != null) {
feedView.cleanup();
feedView = null;
}
}
@Override
public void onDestroy() {
super.onDestroy();
// Додатно чишћење када се фрагмент уништи
if (feedSDK != null) {
feedSDK.cleanup();
feedSDK = null;
}
}
При мењању фрагмената:
// Пре замене или уклањања фрагмента који садржи FastComments погледе
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.container);
if (currentFragment instanceof YourFragmentWithFeedView) {
((YourFragmentWithFeedView) currentFragment).cleanupFeedView();
}
// Затим наставите са трансакцијом фрагмента
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, newFragment)
.commit();
Важно: Увек позивајте cleanup() методе да бисте спречили цурење меморије, посебно када:
- Activity-ји се уништавају
- Погледи фрагмената се уништавају
- Прелазите између фрагмената
- Напуштате екране који садрже FastComments компоненте
Треба помоћ?
Ако наиђете на било какве проблеме или имате питања у вези са Android Library, молимо вас:
Како допринети
Доприноси су добродошли! Молимо вас посетите GitHub репозиторијум за смернице о доприносу.