
Jezik 🇭🇷 Hrvatski
Dokumentacija
Početak rada
Korištenje
Autentikacija
Konfiguracija
FastComments Android Library
Ovo je službena Android biblioteka za FastComments.
Widgeti za komentiranje FastComments za Android
Repozitorij
Značajke 
- 🔄 Komentiranje uživo s ažuriranjima u stvarnom vremenu
- 📱 Izvorne Android UI komponente
- 🧵 Ugniježdene rasprave s odgovorima
- 👤 Sigurna SSO autentikacija
- 👍 Sustav glasovanja s prilagodljivim stilovima
- 🔔 Obavijesti korisnika i prisutnost
- 🔍 Mogućnosti moderiranja komentara
- 📱 Integracija društvenog feeda
- ♾️ Beskonačno pomicanje (paginacija)
- 🎨 Sveobuhvatno prilagođavanje tema
Instalacija 
Dodajte FastComments SDK u datoteku build.gradle.kts svoje aplikacije:
dependencies {
implementation("com.fastcomments:sdk:0.0.1")
}
Provjerite imate li Repsy spremište u datoteci settings.gradle.kts vašeg projekta:
dependencyResolutionManagement {
repositories {
maven {
url = uri("https://repo.repsy.io/mvn/winrid/fastcomments")
}
// other repositories...
}
}
Osnovna upotreba 
1. Dodajte FastCommentsView u svoj layout
<com.fastcomments.sdk.FastCommentsView
android:id="@+id/commentsView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
2. Inicijalizirajte i konfigurirajte SDK
// Konfigurirajte SDK
val config = CommentWidgetConfig(
"your-tenant-id",
"page-url-id",
"Page Title",
"yourdomain.com",
"Site Name"
)
// Dodatne opcije konfiguracije
config.voteStyle = VoteStyle.UpDown // ili VoteStyle.Heart
config.enableInfiniteScrolling = true
config.hasDarkBackground = true // za podršku tamnog načina
// Inicijalizirajte SDK
val sdk = FastCommentsSDK(config)
// Pronađite view za komentare u svom layoutu
val commentsView = findViewById<FastCommentsView>(R.id.commentsView)
// Postavite SDK instancu za view
commentsView.setSDK(sdk)
// Učitajte komentare
commentsView.load()
Sigurna SSO autentikacija 
Implementirajte sigurnu autentifikaciju za svoje korisnike:
// Kreirajte korisničke podatke (idealno na vašem poslužitelju)
val userData = SecureSSOUserData(
"user-id",
"user@example.com",
"User Name",
"https://path-to-avatar.jpg"
)
// Generirajte SSO token (to bi trebalo napraviti na strani poslužitelja!)
val sso = FastCommentsSSO.createSecure("YOUR_API_KEY", userData)
val token = sso.prepareToSend()
// Dodajte u konfiguraciju
config.sso = token
Integracija feeda 
Prikaži feed u stilu društvenih mreža s komentarima:
// Konfiguriraj SDK
CommentWidgetConfig config = new CommentWidgetConfig();
config.tenantId = "your-tenant-id";
config.urlId = "page-url-id";
// Inicijaliziraj Feed SDK
FastCommentsFeedSDK feedSDK = new FastCommentsFeedSDK(config);
// Postavi prikaz feeda
FastCommentsFeedView feedView = findViewById(R.id.feedView);
feedView.setSDK(feedSDK);
// Postavi slušatelja interakcija
feedView.setFeedViewInteractionListener(new FastCommentsFeedView.OnFeedViewInteractionListener() {
@Override
public void onFeedLoaded(List<FeedPost> posts) {
// Feed je uspješno učitan
}
@Override
public void onFeedError(String errorMessage) {
// Obradi pogreške
}
@Override
public void onPostSelected(FeedPost post) {
// Korisnik je odabrao objavu
}
@Override
public void onCommentsRequested(FeedPost post) {
// Prikaži komentare za objavu
CommentsDialog dialog = new CommentsDialog(context, post, feedSDK);
dialog.show();
}
});
// Učitaj feed
feedView.load();
Integracija chata uživo 
Dodajte sučelje za chat u stvarnom vremenu u vašu aplikaciju:
// Dodajte LiveChatView u svoj XML layout
// <com.fastcomments.sdk.LiveChatView
// android:id="@+id/liveChatView"
// android:layout_width="match_parent"
// android:layout_height="match_parent" />
// Kreirajte konfiguraciju za SDK
val config = CommentWidgetConfig().apply {
tenantId = "your-tenant-id"
urlId = "chat-room-identifier"
pageTitle = "Chat Room Name"
}
LiveChatView.setupLiveChatConfig(config)
// Opcionalno: Dodajte autentikaciju korisnika
val userData = SimpleSSOUserData(
"User Name",
"user@example.com",
"https://path-to-avatar.jpg"
)
val sso = FastCommentsSSO(userData)
config.sso = sso.prepareToSend()
// Inicijalizirajte SDK
val sdk = FastCommentsSDK().configure(config)
// Postavite prikaz chata uživo
val liveChatView = findViewById<LiveChatView>(R.id.liveChatView)
liveChatView.setSDK(sdk)
liveChatView.load()
// Ne zaboravite rukovanje životnim ciklusom
override fun onResume() {
super.onResume()
sdk.refreshLiveEvents()
}
override fun onDestroy() {
super.onDestroy()
sdk.cleanup()
}
Primjeri projekata 
Pogledajte ove demo implementacije:
- Osnovni primjer komentara
- Implementacija sigurnog SSO
- Primjer integracije feeda
- Primjer chata uživo
- Primjer dijaloga komentara
Opcije konfiguracije 
SDK pruža mnogo opcija konfiguracije kroz klasu CommentWidgetConfig:
| Opcija | Opis |
|---|---|
tenantId |
ID vašeg FastComments računa |
urlId |
ID koji predstavlja trenutnu stranicu |
sso |
SSO token za autentikaciju |
allowAnon |
Dozvoli anonimno komentiranje |
voteStyle |
Stil glasovanja (UpDown ili Heart) |
hideAvatars |
Sakrij avatare korisnika |
hasDarkBackground |
Označava tamni način rada |
customCSS |
Prilagođeni CSS stilovi |
enableInfiniteScrolling |
Omogući beskonačno pomicanje (infinite scroll) za paginaciju |
readonly |
Onemogući komentiranje, ali prikaži komentare |
disableVoting |
Onemogući glasovanje |
disableLiveCommenting |
Onemogući ažuriranja u stvarnom vremenu |
| --- |
Sveobuhvatno prilagođavanje teme 
Svi gumbi i UI elementi u FastComments SDK-u su prilagodljivi temom. Koristite FastCommentsTheme.Builder za potpunu kontrolu nad brendiranjem vaše aplikacije.
Programsko prilagođavanje teme (preporučeno)
val theme = FastCommentsTheme.Builder()
// Akcijski gumbi: Pošalji, glasaj, izbornik, gumbi sviđanja/dijeljenja
.setActionButtonColor(Color.parseColor("#FF1976D2"))
// Gumbi za odgovor: Gumbi za odgovaranje na komentare
.setReplyButtonColor(Color.parseColor("#FF4CAF50"))
// Preklopni gumbi: Gumbi za prikaz/sakrij odgovore
.setToggleRepliesButtonColor(Color.parseColor("#FFFF5722"))
// Gumbi 'učitaj više': gumbi za paginaciju
.setLoadMoreButtonTextColor(Color.parseColor("#FF9C27B0"))
.setPrimaryColor(Color.parseColor("#FF6200EE"))
.setLinkColor(Color.parseColor("#FF1976D2"))
.setDialogHeaderBackgroundColor(Color.parseColor("#FF333333"))
.build()
// Primijeni temu
sdk.setTheme(theme)
Brzo prepisivanje boja
Prepišite resurse boja u svom colors.xml za jednostavno brendiranje:
<!-- U res/values/colors.xml vaše aplikacije -->
<resources>
<!-- Promijenite sve primarne UI elemente -->
<color name="primary">#FF1976D2</color>
<!-- Ili prilagodite određene tipove gumba -->
<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>
Pokrivenost temiranih gumba
Svaki gumb u SDK-u podržava prilagodbu teme:
- Gumbi Pošalji, gumbi za glasanje, gumbi izbornika, gumbi za odgovor
- Gumbi za prikaz/sakrij odgovore, gumbi 'učitaj više'
- Akcijski gumbi u feedu (sviđa mi se, komentar, dijeli)
- Dialog gumbi (pošalji, otkaži, spremi)
- Dinamički gumbi zadataka u objavama feeda
Za detaljnu dokumentaciju o temiranju, pogledajte THEMING.md.
Upravljanje memorijom 
Sprječavanje curenja memorije
Da biste spriječili curenje memorije pri korištenju FastComments prikaza u aktivnostima ili fragmentima, uvijek pozovite cleanup() kada prikaz više nije potreban:
U aktivnostima:
@Override
protected void onDestroy() {
super.onDestroy();
// Očistite FastComments prikaze kako biste spriječili curenje memorije
if (feedView != null) {
feedView.cleanup();
}
if (commentsView != null) {
commentsView.cleanup();
}
}
U fragmentima:
@Override
public void onDestroyView() {
super.onDestroyView();
// Očistite FastComments prikaze kada se prikaz fragmenta uništi
if (feedView != null) {
feedView.cleanup();
feedView = null;
}
}
@Override
public void onDestroy() {
super.onDestroy();
// Dodatno čišćenje kada se fragment uništi
if (feedSDK != null) {
feedSDK.cleanup();
feedSDK = null;
}
}
Prilikom prebacivanja fragmenta:
// Prije zamjene ili uklanjanja fragmenta koji sadrži FastComments prikaze
Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.container);
if (currentFragment instanceof YourFragmentWithFeedView) {
((YourFragmentWithFeedView) currentFragment).cleanupFeedView();
}
// Zatim nastavite s transakcijom fragmenta
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, newFragment)
.commit();
Važno: Uvijek pozovite cleanup() metode kako biste spriječili curenje memorije, osobito kada:
- aktivnosti se unište
- prikazi fragmenata se unište
- pri prebacivanju između fragmenata
- pri napuštanju zaslona koji sadrže FastComments komponente
Trebate pomoć?
Ako naiđete na bilo kakve probleme ili imate pitanja u vezi Android knjižnice, molimo:
Doprinos
Doprinosi su dobrodošli! Molimo posjetite GitHub repozitorij za smjernice za doprinos.