Privacy Lists Dev

cstux could you commit this plugin into svn but without binding it to spark into plugin.xml file ?

Hi,

Now it was in the SVN 11610

Thx a lot =)

a problem, it doesnt build http://www.igniterealtime.org/community/message/200679#200679

The images should be added.
privacyResources.patch.zip (435 Bytes)

And need to add image names into spark.properties
Res.patch.zip (728 Bytes)

Here are some code changes and privacy modifications (bugs fixes).

There was bug with removing people from blocked list. Sometime you couldn’t unblock user.
And the second bug was with privacy list items order. (there couldn’t be non-unique order values by specifications, but for now it possible)

There is source code into attach.

Can you create a diff? (with “svn diff” or diff -ur)

here are both variants
privacy.tar.gz (10977 Bytes)
Privacy.tar.gz (2829 Bytes)

Applied to the trunk

Moved thread to contributors, I hope that everyone enjoys this new group (;

LG

Applied new version, please test it.

can’t find an option to block a contact in the latest build.

The nightly build does not build plugins automatically. You have to change the build script for Bamboo and provide a pre build jar for the build.

It built but i forgot to turn on this plugin into plugins.xml

Applied into 12121 revision.

Tested and not working with nightly against a 3.6.4:

16.03.2011 12:02:28 org.jivesoftware.spark.util.log.Log error

SCHWERWIEGEND:

item-not-found(404)

at org.jivesoftware.smack.PrivacyListManager.getRequest(PrivacyListManager.java:20 0)

at org.jivesoftware.smack.PrivacyListManager.getPrivacyListItems(PrivacyListManage r.java:303)

at org.jivesoftware.smack.PrivacyListManager.getPrivacyList(PrivacyListManager.jav a:317)

at org.jivesoftware.sparkimpl.plugin.privacy.list.SparkPrivacyList.loadList(SparkP rivacyList.java:86)

at org.jivesoftware.sparkimpl.plugin.privacy.list.SparkPrivacyList.(SparkPri vacyList.java:236)

at org.jivesoftware.sparkimpl.plugin.privacy.list.PrivacyListBlackList.(Priv acyListBlackList.java:40)

at org.jivesoftware.sparkimpl.plugin.privacy.PrivacyManager.getBlackList(PrivacyMa nager.java:124)

at org.jivesoftware.sparkimpl.plugin.privacy.PrivacyPlugin.scanContactList(Privacy Plugin.java:116)

at org.jivesoftware.sparkimpl.plugin.privacy.PrivacyPlugin$1.finished(PrivacyPlugi n.java:88)

at org.jivesoftware.spark.util.SwingWorker$2$1.run(SwingWorker.java:148)

at java.awt.event.InvocationEvent.dispatch(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at org.jivesoftware.sparkimpl.plugin.idle.UserIdlePlugin$1.dispatchEvent(UserIdleP lugin.java:159)

at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.run(Unknown Source)

16.03.2011 12:02:28 org.jivesoftware.spark.util.log.Log error

SCHWERWIEGEND:

item-not-found(404)

at org.jivesoftware.smack.PrivacyListManager.getRequest(PrivacyListManager.java:20 0)

at org.jivesoftware.smack.PrivacyListManager.getPrivacyListItems(PrivacyListManage r.java:303)

at org.jivesoftware.smack.PrivacyListManager.getDefaultList(PrivacyListManager.jav a:286)

at org.jivesoftware.sparkimpl.plugin.privacy.list.SparkPrivacyList.isDefault(Spark PrivacyList.java:340)

at org.jivesoftware.sparkimpl.plugin.privacy.list.PrivacyListBlackList.(Priv acyListBlackList.java:42)

at org.jivesoftware.sparkimpl.plugin.privacy.PrivacyManager.getBlackList(PrivacyMa nager.java:124)

at org.jivesoftware.sparkimpl.plugin.privacy.PrivacyPlugin.scanContactList(Privacy Plugin.java:116)

at org.jivesoftware.sparkimpl.plugin.privacy.PrivacyPlugin$1.finished(PrivacyPlugi n.java:88)

at org.jivesoftware.spark.util.SwingWorker$2$1.run(SwingWorker.java:148)

at java.awt.event.InvocationEvent.dispatch(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at org.jivesoftware.sparkimpl.plugin.idle.UserIdlePlugin$1.dispatchEvent(UserIdleP lugin.java:159)

at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.run(Unknown Source)

Exception in thread “AWT-EventQueue-1” java.lang.NullPointerException

at org.jivesoftware.sparkimpl.plugin.privacy.list.SparkPrivacyList.getMaxItemOrder (SparkPrivacyList.java:112)

at org.jivesoftware.sparkimpl.plugin.privacy.list.SparkPrivacyList.getNewItemOrder (SparkPrivacyList.java:153)

at org.jivesoftware.sparkimpl.plugin.privacy.list.PrivacyListBlackList.prepareItem (PrivacyListBlackList.java:76)

at org.jivesoftware.sparkimpl.plugin.privacy.list.SparkPrivacyList.addItem(SparkPr ivacyList.java:247)

at org.jivesoftware.sparkimpl.plugin.privacy.PrivacyPlugin$2$2.actionPerformed(Pri vacyPlugin.java:160)

at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.setPressed(Unknown Source)

at javax.swing.AbstractButton.doClick(Unknown Source)

at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)

at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)

at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)

at java.awt.Component.processMouseEvent(Unknown Source)

at javax.swing.JComponent.processMouseEvent(Unknown Source)

at java.awt.Component.processEvent(Unknown Source)

at java.awt.Container.processEvent(Unknown Source)

at java.awt.Component.dispatchEventImpl(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Window.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at org.jivesoftware.sparkimpl.plugin.idle.UserIdlePlugin$1.dispatchEvent(UserIdleP lugin.java:159)

at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.run(Unknown Source)

Exception in thread “AWT-EventQueue-1” java.lang.NullPointerException

at org.jivesoftware.sparkimpl.plugin.privacy.list.SparkPrivacyList.getMaxItemOrder (SparkPrivacyList.java:112)

at org.jivesoftware.sparkimpl.plugin.privacy.list.SparkPrivacyList.getNewItemOrder (SparkPrivacyList.java:153)

at org.jivesoftware.sparkimpl.plugin.privacy.list.PrivacyListBlackList.prepareItem (PrivacyListBlackList.java:76)

at org.jivesoftware.sparkimpl.plugin.privacy.list.SparkPrivacyList.addItem(SparkPr ivacyList.java:247)

at org.jivesoftware.sparkimpl.plugin.privacy.PrivacyPlugin$2$2.actionPerformed(Pri vacyPlugin.java:160)

at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)

at javax.swing.DefaultButtonModel.setPressed(Unknown Source)

at javax.swing.AbstractButton.doClick(Unknown Source)

at javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)

at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)

at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)

at java.awt.Component.processMouseEvent(Unknown Source)

at javax.swing.JComponent.processMouseEvent(Unknown Source)

at java.awt.Component.processEvent(Unknown Source)

at java.awt.Container.processEvent(Unknown Source)

at java.awt.Component.dispatchEventImpl(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)

at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)

at java.awt.Container.dispatchEventImpl(Unknown Source)

at java.awt.Window.dispatchEventImpl(Unknown Source)

at java.awt.Component.dispatchEvent(Unknown Source)

at java.awt.EventQueue.dispatchEvent(Unknown Source)

at org.jivesoftware.sparkimpl.plugin.idle.UserIdlePlugin$1.dispatchEvent(UserIdleP lugin.java:159)

at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

at java.awt.EventDispatchThread.run(Unknown Source)

a preference panel would be nice for this, because in some occasions i only want to appear offline but still receive messages

currently it also blocks messages from blocked contacs

I’m working on this.

And I’d like to add list of bloked users and ability to have and manage more then one privacy list.

Privacy works now on build 134. I agree on Wolf’s comments. The basic feature works, but there are some usability issues missing and a general issue.

Let’s do some brain storming. What’s privacy?

  1. no one should see my presence status, except my “inner circle” of contacts. All people can start a chat with me. It’s my decision to accept the chat.

  2. Only the inner circle can see presence and chat. All other chat attempts do not get through and messages are thrown away.

  3. Only the inner circle sees my presence and they can chat with me. All other chat attempts by other contacts are not shown to me and will be shown after I switch off the privacy mode as “offline messages”

Currently the mode (2) is in contrast to XMPP standard operation. If I am offline (really disconnected), I’ll get the messages of other contacts as “offline” message. Dropping messages (throwing them away) is rather unusual for XMPP servers.

In it’s current implementation: Who is dropping the messages of a “blocked” contact? Is it the server or the client?

From the usability point of view: I really would like to define an “inner circle” and switch between “privacy” and “normal presence”. A list management for the inner circle would be very nice.

Anyhow: Great work Konstantin.

In it’s current implementation: Who is dropping the messages of a “blocked” contact? Is it the server or the client?

Server.

I think the best way will be to give users ability to switch between statuses:

  1. invisible for all

  2. visible for all

  3. visible for my contact list (or visible for specified contacts)