Coder Social home page Coder Social logo

fchat-pidgin / fchat-pidgin Goto Github PK

View Code? Open in Web Editor NEW
22.0 10.0 10.0 942 KB

A pidgin/libpurple plugin for the F-List roleplaying webchat

License: GNU General Public License v2.0

Shell 0.71% C 97.16% NSIS 0.78% Makefile 1.23% Awk 0.11%
pidgin-plugins instant-messaging pidgin roleplaying

fchat-pidgin's Introduction

fchat-pidgin

Pidgin plugin for using FList's chat. Forked from TestPanther's version over at https://code.google.com/p/flist-pidgin/

Building

Prerequisites (on Debian-like systems, including Ubuntu)

sudo apt-get install build-essential make pidgin-dev libjson-glib-dev libnss3-dev

Prerequisites (on RedHat-like systems, including Fedora)

sudo yum install gcc make pidgin-devel json-glib-devel nss-devel

To build the plugin for Pidgin, run :

make

Then run sudo make install to install the plugin in the system-wide plugin directory, or simply copy the flist.so file in ~/.purple/plugins

Using the plugin with non-pidgin clients

This plugin makes uses of several Pidgin-specific features.

To build the plugin for other libpurple clients (Finch, Spectrum 2, Minbif, Bitlbee), run :

make FLIST_PURPLE_ONLY=1

Instead of regular make

In order to choose which character to log in as with those clients, use "Accountname:Charactername" as the login, and your account password as the password.

TLS-related hacks

The plugin currently hacks around NSS to circumvent this bug https://bugzil.la/1202264 (only affecting NSS<3.23) as well as issue #156 . You may disable all NSS hacks by building with this option :

make DISABLE_NSSFIX=1

Instead of regular make

Cross Compilation

Prerequisites (on Debian-like systems)

sudo apt-get install gcc-mingw-w64-i686 make nsis

Run make prepare_cross to fetch the dependencies you need to build a 32-bit Windows version of the plugin from Linux.

Then, run

make libflist.dll

to build the plugin, or

make win_installer

to build the plugin's installer

fchat-pidgin's People

Contributors

fcwill avatar laleila avatar lurkerhub avatar syldrathecat avatar vobe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fchat-pidgin's Issues

Request profile data via Web API fails

When trying to view a characters profile information, the plugin attempts to retrieve it using F-List's web API but fails when parsing the resulting JSON:

(12:44:30) flist: cgi writing key, value: ticket, [redacted]
(12:44:30) flist: cgi writing key, value: account, [redacted]
(12:44:30) flist: cgi writing key, value: name, [redacted]
(12:44:30) flist: posting (len: 111): ticket=[redacted]&account=[redacted]&name=[redacted]
(12:44:30) util: requesting to fetch a URL
(12:44:30) util: Defaulting max download from https://www.f-list.net/json/api/character-info.php to 524288
(12:44:30) dnsquery: Performing DNS lookup for www.f-list.net
(12:44:30) dns: Successfully sent DNS request to child 3144
(12:44:30) dns: Got response for 'www.f-list.net'
(12:44:30) dnsquery: IP resolved for www.f-list.net
(12:44:30) proxy: Attempting connection to 192.30.138.134
(12:44:30) proxy: Connecting to www.f-list.net:443 with no proxy
(12:44:30) proxy: Connection in progress
(12:44:31) flist: Processing message... (Code: PIN)
(12:44:31) proxy: Connecting to www.f-list.net:443.
(12:44:31) proxy: Connected to www.f-list.net:443.
(12:44:31) nss: SSL version 3.3 using 128-bit AES-GCM with 128-bit AEAD MAC
Server Auth: 2048-bit RSA, Key Exchange: 256-bit ECDHE, Compression: NULL
Cipher Suite Name: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
(12:44:31) nss: subject=CN=*.f-list.net,OU=PositiveSSL Wildcard,OU=Domain Control Validated issuer=CN=COMODO RSA Domain Validation Secure Server CA,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB
(12:44:31) nss: subject=CN=COMODO RSA Domain Validation Secure Server CA,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB issuer=CN=COMODO RSA Certification Authority,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB
(12:44:31) nss: subject=CN=COMODO RSA Certification Authority,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB issuer=CN=AddTrust External CA Root,OU=AddTrust External TTP Network,O=AddTrust AB,C=SE
(12:44:31) nss: subject=CN=AddTrust External CA Root,OU=AddTrust External TTP Network,O=AddTrust AB,C=SE issuer=CN=AddTrust External CA Root,OU=AddTrust External TTP Network,O=AddTrust AB,C=SE
(12:44:31) certificate/x509/tls_cached: Starting verify for www.f-list.net
(12:44:31) certificate/x509/tls_cached: Checking for cached cert...
(12:44:31) certificate/x509/tls_cached: ...Found cached cert
(12:44:31) nss/x509: Loading certificate from /home/[redacted]/.purple/certificates/x509/tls_peers/www.f-list.net
(12:44:31) certificate/x509/tls_cached: Peer cert matched cached
(12:44:31) nss/x509: Exporting certificate to /home/[redacted]/.purple/certificates/x509/tls_peers/www.f-list.net
(12:44:31) util: Writing file /home/[redacted]/.purple/certificates/x509/tls_peers/www.f-list.net
(12:44:31) nss: Trusting CN=*.f-list.net,OU=PositiveSSL Wildcard,OU=Domain Control Validated
(12:44:31) certificate: Successfully verified certificate for www.f-list.net
(12:44:31) util: request constructed
(12:44:32) flist: Processing message... (Code: FLN)
(12:44:32) flist: Processing message... (Code: FLN)
(12:44:32) util: Response headers: 'HTTP/1.1 200 OK
Server: nginx
Date: Thu, 12 Feb 2015 11:44:32 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Cache-Control: no-store, no-cache, must-revalidate
Cache-Control: post-check=0, pre-check=0
Pragma: no-cache
Content-Security-Policy: default-src https://*.f-list.net; script-src https://*.f-list.net https://ajax.googleapis.com https://www.google.com 'unsafe-inline' 'unsafe-eval'; img-src https://*.f-list.net https://www.google.com; style-src https://*.f-list.net 'unsafe-inline'; connect-src https://*.f-list.net wss://chat.f-list.net:9799 ws://chat.f-list.net:9722 wss://chat.f-list.net:8799 ws://chat.f-list.net:8722;
X-Frame-Options: deny
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff

'


(12:44:32) flist: Web Request JSON Received: {"info":{"1":{"group":"Contact details\/Sites","items":[]},"3":{"group":"General details","items":[{"id":"2","name":"Orientation","value":"Bi - female preference"},{"id":"3","name":"Gender","value":"Male"}]},"5":{"group":"RPing preferences","items":[{"id":"29","name":"Furry preference","value":"Furs and \/ or humans"},{"id":"49","name":"Language preference","value":"German"}]},"2":{"group":"Sexual details","items":[{"id":"15","name":"Dom\/Sub Role","value":"Usually submissive"},{"id":"16","name":"Ball size","value":"Normal"},{"id":"32","name":"Cock shape","value":"Human"},{"id":"35","name":"Cock color","value":"Flesh"},{"id":"38","name":"Barbed","value":"Yes"},{"id":"41","name":"Position","value":"Usually Bottom"}]},"":{"items":null}},"error":""}
(12:44:32) flist: Expected JSON Object, but did not parse with error message: <data>:1:728: Parse error: invalid empty string constant "", expected valid string constant
(12:44:32) flist: Raw JSON: {"info":{"1":{"group":"Contact details\/Sites","items":[]},"3":{"group":"General details","items":[{"id":"2","name":"Orientation","value":"Bi - female preference"},{"id":"3","name":"Gender","value":"Male"}]},"5":{"group":"RPing preferences","items":[{"id":"29","name":"Furry preference","value":"Furs and \/ or humans"},{"id":"49","name":"Language preference","value":"German"}]},"2":{"group":"Sexual details","items":[{"id":"15","name":"Dom\/Sub Role","value":"Usually submissive"},{"id":"16","name":"Ball size","value":"Normal"},{"id":"32","name":"Cock shape","value":"Human"},{"id":"35","name":"Cock color","value":"Flesh"},{"id":"38","name":"Barbed","value":"Yes"},{"id":"41","name":"Position","value":"Usually Bottom"}]},"":{"items":null}},"error":""}
(12:44:32) flist: We requested a profile from the Web API, but failed. Error Message: Invalid JSON.

Adding/removing bookmarks sometimes throws "Invalid ticket" errors

See https://code.google.com/p/flist-pidgin/issues/detail?id=38

(12:56:30) flist: cgi writing key, value: ticket, [redacted]
(12:56:30) flist: cgi writing key, value: account, [redacted]
(12:56:30) flist: cgi writing key, value: name, [redacted]
(12:56:30) flist: posting (len: 101): ticket=[redacted]&account=[redacted]&name=[redacted]
(12:56:30) util: requesting to fetch a URL
(12:56:30) util: Defaulting max download from https://www.f-list.net/json/api/bookmark-add.php to 524288
(12:56:30) dnsquery: Performing DNS lookup for www.f-list.net
(12:56:30) dns: Successfully sent DNS request to child 3308
(12:56:30) dns: Got response for 'www.f-list.net'
(12:56:30) dnsquery: IP resolved for www.f-list.net
(12:56:30) proxy: Attempting connection to 192.30.138.134
(12:56:30) proxy: Connecting to www.f-list.net:443 with no proxy
(12:56:30) proxy: Connection in progress
(12:56:30) proxy: Connecting to www.f-list.net:443.
(12:56:30) proxy: Connected to www.f-list.net:443.
(12:56:31) flist: Processing message... (Code: PIN)
(12:56:31) nss: SSL version 3.3 using 128-bit AES-GCM with 128-bit AEAD MAC
Server Auth: 2048-bit RSA, Key Exchange: 256-bit ECDHE, Compression: NULL
Cipher Suite Name: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
(12:56:31) nss: subject=CN=*.f-list.net,OU=PositiveSSL Wildcard,OU=Domain Control Validated issuer=CN=COMODO RSA Domain Validation Secure Server CA,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB
(12:56:31) nss: subject=CN=COMODO RSA Domain Validation Secure Server CA,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB issuer=CN=COMODO RSA Certification Authority,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB
(12:56:31) nss: subject=CN=COMODO RSA Certification Authority,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB issuer=CN=AddTrust External CA Root,OU=AddTrust External TTP Network,O=AddTrust AB,C=SE
(12:56:31) nss: subject=CN=AddTrust External CA Root,OU=AddTrust External TTP Network,O=AddTrust AB,C=SE issuer=CN=AddTrust External CA Root,OU=AddTrust External TTP Network,O=AddTrust AB,C=SE
(12:56:31) certificate/x509/tls_cached: Starting verify for www.f-list.net
(12:56:31) certificate/x509/tls_cached: Checking for cached cert...
(12:56:31) certificate/x509/tls_cached: ...Found cached cert
(12:56:31) nss/x509: Loading certificate from /home/[redacted]/.purple/certificates/x509/tls_peers/www.f-list.net
(12:56:31) certificate/x509/tls_cached: Peer cert matched cached
(12:56:31) nss/x509: Exporting certificate to /home/[redacted]/.purple/certificates/x509/tls_peers/www.f-list.net
(12:56:31) util: Writing file /home/[redacted]/.purple/certificates/x509/tls_peers/www.f-list.net
(12:56:31) nss: Trusting CN=*.f-list.net,OU=PositiveSSL Wildcard,OU=Domain Control Validated
(12:56:31) certificate: Successfully verified certificate for www.f-list.net
(12:56:31) util: request constructed
(12:56:31) nss: SSL version 3.3 using 128-bit AES-GCM with 128-bit AEAD MAC
Server Auth: 2048-bit RSA, Key Exchange: 256-bit ECDHE, Compression: NULL
Cipher Suite Name: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
(12:56:31) nss: subject=CN=*.f-list.net,OU=PositiveSSL Wildcard,OU=Domain Control Validated issuer=CN=COMODO RSA Domain Validation Secure Server CA,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB
(12:56:31) nss: subject=CN=COMODO RSA Domain Validation Secure Server CA,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB issuer=CN=COMODO RSA Certification Authority,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB
(12:56:31) nss: subject=CN=COMODO RSA Certification Authority,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB issuer=CN=AddTrust External CA Root,OU=AddTrust External TTP Network,O=AddTrust AB,C=SE
(12:56:31) nss: subject=CN=AddTrust External CA Root,OU=AddTrust External TTP Network,O=AddTrust AB,C=SE issuer=CN=AddTrust External CA Root,OU=AddTrust External TTP Network,O=AddTrust AB,C=SE
(12:56:31) certificate/x509/tls_cached: Starting verify for www.f-list.net
(12:56:31) certificate/x509/tls_cached: Checking for cached cert...
(12:56:31) certificate/x509/tls_cached: ...Found cached cert
(12:56:31) nss/x509: Loading certificate from /home/[redacted]/.purple/certificates/x509/tls_peers/www.f-list.net
(12:56:31) certificate/x509/tls_cached: Peer cert matched cached
(12:56:31) nss/x509: Exporting certificate to /home/[redacted]/.purple/certificates/x509/tls_peers/www.f-list.net
(12:56:31) util: Writing file /home/[redacted]/.purple/certificates/x509/tls_peers/www.f-list.net
(12:56:31) nss: Trusting CN=*.f-list.net,OU=PositiveSSL Wildcard,OU=Domain Control Validated
(12:56:31) certificate: Successfully verified certificate for www.f-list.net
(12:56:31) util: request constructed
(12:56:31) util: Response headers: 'HTTP/1.1 200 OK
Server: nginx
Date: Thu, 12 Feb 2015 11:56:31 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Cache-Control: no-store, no-cache, must-revalidate
Cache-Control: post-check=0, pre-check=0
Pragma: no-cache
Content-Security-Policy: default-src https://*.f-list.net; script-src https://*.f-list.net https://ajax.googleapis.com https://www.google.com 'unsafe-inline' 'unsafe-eval'; img-src https://*.f-list.net https://www.google.com; style-src https://*.f-list.net 'unsafe-inline'; connect-src https://*.f-list.net wss://chat.f-list.net:9799 ws://chat.f-list.net:9722 wss://chat.f-list.net:8799 ws://chat.f-list.net:8722;
X-Frame-Options: deny
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff

'
(12:56:31) flist: Web Request JSON Received: {"error":"Invalid ticket."}
(12:56:31) flist: The server returned an unknown error for our friends action. Error Message: Invalid ticket.

Optimization for Spectrum2

I was trying to use the fchat-pidgin with Spectrum2 to create a F-Chat jabber transport but i just get errors (symbol lookup error) when i try to load the plugin. I dont have this problem with any of the other "non-standard" plugins i use.

Large logs are not uploaded correctly

I've tried uploading a rather large channel log (~65kB). It still has its original content in flist_report_send() (https://github.com/fcwill/fchat-pidgin/blob/3c35070e268a6c49822c28e0800999e53508e3cf/f-list_report.c#L110), after stripping HTML code.

It then gets passed into flist_web_request() and subsequently into http_request(). It still has its original content in g_string_append_cgi() (https://github.com/fcwill/fchat-pidgin/blob/3c35070e268a6c49822c28e0800999e53508e3cf/f-list_util.c#L52)

The resulting POST request's body only had 2244 bytes, cutting off the original message (https://github.com/fcwill/fchat-pidgin/blob/3c35070e268a6c49822c28e0800999e53508e3cf/f-list_util.c#L105), so data gets lost between flist_report_send() and http_request().

Also, cookies were missing in the request. This might be a different issue.

Add "Alert Staff" functionality

Add a way for users to report characters and alert staffers. This should do the following things:

1.) Let the user enter a reason for his report
2.) Fetch, format and upload logs of the conversation reported to F-List
3.) Make a SFC request, containing the uploaded log id

Missing context menu entries

Several context menu entries are missing:

  • Channel administration (COP, CDEOP, KICK, BAN, ...)
  • Ignore/bookmark functions are currently only displayed on friends

All context sensitive commands should be available via the right-click context menu.

/warn only gets formatted for the issuer

Only the one writing a warning (/warn I am warning you!) will see the message in bold red font, other users will just see the message (without the /warn at the beginning, though).

Implement eicon-BBcode

[eicon]xxx[/eicon] displays animated GIF icons from your personal icon gallery in chat.

Maybe animated smilies are the way to go.

Channel name missing when invited to room

When a user gets invited to a channel, Pidgin uses the chat's internal channel ID as name instead of the actual name.

Reproduce this with:
On character 1:
/makeroom thisisatestroom
/invite character2

On character 2:
Accept invitation

Instead of "thisisatestroom", the channel will be called something like ADH-29b6684aca1c826c39fe

Ticket notices

Below is the way a ticket shows when submitted by a user.

(6:51:59 PM) #FList: Lutra Mustil submitted a helpdesk ticket, "Not a real ticket"

Where is says "Not a real ticket" above is linked and will lead to the ticket, but where it shows the name of the reporter (here, Lutra Mustil), it does not provide a link to the profile, as it does on the browser chat. It would be useful to have that feature.

Suggestion for profile links

This is how the staff alerts come in at this time for chat reports.

(5:40:06 PM) #FList: Moderator Alert. Lutra Mustil writes:
Current Tab/Channel: Nelwill | Reporting User: no one | Pidgin test
Confirm Alert, View Log

My suggestion is to have a link where it shows the name of the reporter (here, Lutra Mustil) and the name of the reporting user (here, no one) to make it easier to open profiles for moderating purposes.

Can't compile on Fedora 22

Hello. Trying to compile the source code from the release zip, but I am having trouble with 'util.h'. I am running Fedora 22 and I have used yum-builddep pidgin to grab all the build dependencies for compiling Pidgin from source. (Which I have done successfully.)

I am not doing anything special with the build commands. I simply run 'make' at the base directory of the extracted zip file.

Here is the compiler output:

gcc -Wall -I. -g -std=c99 -O2 -pipe f-list.c f-list_admin.c f-list_autobuddy.c f-list_bbcode.c f-list_callbacks.c f-list_channels.c f-list_commands.c f-list_connection.c f-list_icon.c f-list_kinks.c f-list_profile.c f-list_json.c f-list_friends.c f-list_status.c f-list_rtb.c f-list_ignore.c f-list_pidgin.c -o flist.so -shared -fPIC -DPURPLE_PLUGINS -DENABLE_NLS -DHAVE_ZLIB `pkg-config pidgin --cflags --libs` `pkg-config glib-2.0 json-glib-1.0 --cflags --libs` 
Package pidgin was not found in the pkg-config search path.
Perhaps you should add the directory containing `pidgin.pc'
to the PKG_CONFIG_PATH environment variable
No package 'pidgin' found
In file included from f-list.c:26:0:
f-list.h:50:18: fatal error: util.h: No such file or directory
 #include "util.h"
                  ^
compilation terminated.
In file included from f-list_admin.h:24:0,
                 from f-list_admin.c:21:
f-list.h:50:18: fatal error: util.h: No such file or directory
 #include "util.h"
                  ^
compilation terminated.
In file included from f-list_autobuddy.h:24:0,
                 from f-list_autobuddy.c:21:
f-list.h:50:18: fatal error: util.h: No such file or directory
 #include "util.h"
                  ^
compilation terminated.
In file included from f-list_bbcode.h:24:0,
                 from f-list_bbcode.c:21:
f-list.h:50:18: fatal error: util.h: No such file or directory
 #include "util.h"
                  ^
compilation terminated.
In file included from f-list_callbacks.h:24:0,
                 from f-list_callbacks.c:21:
f-list.h:50:18: fatal error: util.h: No such file or directory
 #include "util.h"
                  ^
compilation terminated.
In file included from f-list_channels.h:24:0,
                 from f-list_channels.c:21:
f-list.h:50:18: fatal error: util.h: No such file or directory
 #include "util.h"
                  ^
compilation terminated.
In file included from f-list_commands.h:24:0,
                 from f-list_commands.c:21:
f-list.h:50:18: fatal error: util.h: No such file or directory
 #include "util.h"
                  ^
compilation terminated.
In file included from f-list_connection.h:33:0,
                 from f-list_connection.c:21:
f-list.h:50:18: fatal error: util.h: No such file or directory
 #include "util.h"
                  ^
compilation terminated.
In file included from f-list_icon.h:24:0,
                 from f-list_icon.c:21:
f-list.h:50:18: fatal error: util.h: No such file or directory
 #include "util.h"
                  ^
compilation terminated.
In file included from f-list_kinks.h:24:0,
                 from f-list_kinks.c:21:
f-list.h:50:18: fatal error: util.h: No such file or directory
 #include "util.h"
                  ^
compilation terminated.
In file included from f-list_profile.h:24:0,
                 from f-list_profile.c:21:
f-list.h:50:18: fatal error: util.h: No such file or directory
 #include "util.h"
                  ^
compilation terminated.
In file included from f-list_json.h:4:0,
                 from f-list_json.c:2:
f-list.h:50:18: fatal error: util.h: No such file or directory
 #include "util.h"
                  ^
compilation terminated.
In file included from f-list_friends.h:24:0,
                 from f-list_friends.c:22:
f-list.h:50:18: fatal error: util.h: No such file or directory
 #include "util.h"
                  ^
compilation terminated.
In file included from f-list_status.h:24:0,
                 from f-list_status.c:21:
f-list.h:50:18: fatal error: util.h: No such file or directory
 #include "util.h"
                  ^
compilation terminated.
In file included from f-list_rtb.h:24:0,
                 from f-list_rtb.c:21:
f-list.h:50:18: fatal error: util.h: No such file or directory
 #include "util.h"
                  ^
compilation terminated.
In file included from f-list_ignore.h:4:0,
                 from f-list_ignore.c:1:
f-list.h:50:18: fatal error: util.h: No such file or directory
 #include "util.h"
                  ^
compilation terminated.
In file included from f-list_pidgin.h:4:0,
                 from f-list_pidgin.c:2:
f-list.h:50:18: fatal error: util.h: No such file or directory
 #include "util.h"
                  ^
compilation terminated.
Makefile:86: recipe for target 'flist.so' failed
make: *** [flist.so] Error 1

I am not sure how to use the PKG_CONFIG_PATH variable. I assume the problem has to do with the compiler not locating the 'util.h' file which is part of the libpurple package?

/topic command doesn't work

The standard /topic command cannot be used to change a private channel description, we neet to implement a set_chat_topic callback.

eicons cause increased CPU usage

Depending on their number, eicons cause a bit of CPU usage (around 25% on an i5 2500 @3.3 GHz).

Should investigate if there's a way to improve this, maybe a way to disable eicons or only load one frame of the animation.

Use secure connection by default

Currently, when creating a new account users have to manually tick "Use secure connections". This should be ticked by default as I can see no reason anyone prefers a plain text connection over a transport encrypted one.

/getdescription parses smileys

/getdescription should return the unparsed description of a channel. It does not parse BBCode, but all smileys are replaced by their pictures (meaning character icons and eicons).

Wrong character name in staff alert message

Staff alert message would contain your own character's name instead of the one you wanted to report: Current Tab/Channel: | Reporting User: | , effectively meaning you are reporting yourself.

Display disconnect notification for non-friend users in private conversations

When chatting with a non-friended, non-bookmarked user, you won't get a notification (e.g. User has disconnected) in private conversations with said user.

When the server sends FLN (User disconnected) or NLN (User connected), we should check open private conversations and display a system message.

This might have implications for privacy though? How does the web client handle this?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.