2015-08-13 139 views
0

我正在開發使用Firebase的聊天工具。但是我在執行hellban時遇到問題。我需要下一個功能: - 如果用戶被封鎖,他可以寫郵件,他可以看到並閱讀它,但其他用戶不應該看到這些郵件。 我沒有這個問題的正確解決方案。你有實現這個hellban功能的api嗎?或者可能你可以帶我一些提示?如何在Firebase聊天中實現hellban?

回答

1

這確實取決於您的要求。

如果你想所有消息由地獄禁止用戶被禁止(包括郵件發送之前禁令後),那麼你應該創建用戶對象的banned布爾屬性並將其設置爲true。弄清楚是否應該向另一個用戶顯示一條消息,然後檢查是否在「on-new-message」處理程序中的違規者用戶對象上設置了「禁止」標誌。

如果你想爲呈現標記個人信息的途徑(在情況下,當你只是想給塊消息用戶被禁止後發送),那麼你也應該設定標誌另外message對象在違規者的user對象上設置標誌。在寫出新消息之前,請檢查消息的撰寫者是否被禁止,並且如果她將消息上的banned標誌設置爲true。在您的「新消息」處理程序中,檢查banned標誌在顯示給用戶之前是否已設置。

在這兩種情況下,您都應該檢查消息中的userId,以查看「on-new-message」並顯示它,無論banned狀態是否由登錄用戶寫入。

一些例子來引導您完成(在JavaScript):

/* ref is on messages collection */ 

//Retrieval 
ref.on("child_added", function(snapshot, prevChildKey) { 
    var newMessage = snapshot.val(); 
    if(newMessage.userId == user.id || !newMessage.banned) { 
    /* Display Message */ 
    } 
}); 

//Posting 
var newMessage = { 
    userId = user.id 
    ... 
} 
if(user.banned){ 
    newMessage.banned = true; 
} 
ref.push(newMessage)