Merge branch 'master' of github.com:diaspora/diaspora

This commit is contained in:
zhitomirskiyi 2010-11-16 12:01:22 -08:00
commit 9b5a6cc27a
21 changed files with 797 additions and 710 deletions

2
.rspec
View file

@ -1 +1,3 @@
--color --color
--require rspec/instafail
--format RSpec::Instafail

View file

@ -10,10 +10,39 @@ class PeopleController < ApplicationController
def index def index
@aspect = :search @aspect = :search
@people = Person.search(params[:q]).paginate :page => params[:page], :per_page => 25, :order => 'created_at DESC' @people = Person.search(params[:q]).paginate :page => params[:page], :per_page => 25, :order => 'created_at DESC'
# dont do it@people.first.diaspora_handle == params[:q]
#only do it if it is an email address
if params[:q].try(:match, Devise.email_regexp)
find_remote_user(params[:q])
end
respond_with @people respond_with @people
end end
def find_remote_user(account)
finger = EMWebfinger.new(account)
finger.on_person do |response|
begin
puts response.inspect
if response.class == Person
response.socket_to_uid(current_user.id, :aspects => @aspects)
else
require File.join(Rails.root,'lib/diaspora/websocket')
puts Diaspora::WebSocket
Diaspora::WebSocket.queue_to_user(current_user.id, {:class => 'person', :query => account, :response => response})
end
rescue
end
end
end
def show def show
@person = Person.find(params[:id].to_id) @person = Person.find(params[:id].to_id)

View file

@ -3,17 +3,19 @@
# the COPYRIGHT file. # the COPYRIGHT file.
module SocketsHelper module SocketsHelper
include ApplicationHelper include ApplicationHelper
def obj_id(object) def obj_id(object)
(object.is_a? Post) ? object.id : object.post_id object.respond_to?(:post_id) ? object.post_id : object.id
end end
def action_hash(uid, object, opts={}) def action_hash(uid, object, opts={})
begin begin
user = User.find_by_id uid user = User.find_by_id uid
if object.is_a? Post if object.is_a? Post
v = render_to_string(:partial => 'shared/stream_element', :locals => {:post => object, :current_user => user}) unless object.is_a? Retraction v = render_to_string(:partial => 'shared/stream_element', :locals => {:post => object, :current_user => user})
elsif object.is_a? Person
v = render_to_string(:partial => type_partial(object), :locals => {:person => object, :current_user => user}) unless object.is_a? Retraction
else else
v = render_to_string(:partial => type_partial(object), :locals => {:post => object, :current_user => user}) unless object.is_a? Retraction v = render_to_string(:partial => type_partial(object), :locals => {:post => object, :current_user => user}) unless object.is_a? Retraction
end end
@ -32,7 +34,7 @@ module SocketsHelper
action_hash[:notification] = notification(object) action_hash[:notification] = notification(object)
end end
action_hash[:mine?] = object.person && (object.person.owner.id == uid) action_hash[:mine?] = object.person && (object.person.owner.id == uid) if object.respond_to?(:person)
action_hash.to_json action_hash.to_json
end end

View file

@ -8,6 +8,8 @@ class Person
include MongoMapper::Document include MongoMapper::Document
include ROXML include ROXML
include Encryptor::Public include Encryptor::Public
require File.join(Rails.root, 'lib/diaspora/websocket')
include Diaspora::Socketable
xml_accessor :_id xml_accessor :_id
xml_accessor :diaspora_handle xml_accessor :diaspora_handle
@ -148,7 +150,6 @@ class Person
} }
} }
end end
protected protected
def clean_url def clean_url

View file

@ -239,6 +239,7 @@ class User
end end
def push_to_person(salmon, post, person) def push_to_person(salmon, post, person)
person.reload # Sadly, we need this for Ruby 1.9.
# person.owner will always return a ProxyObject. # person.owner will always return a ProxyObject.
# calling nil? performs a necessary evaluation. # calling nil? performs a necessary evaluation.
unless person.owner.nil? unless person.owner.nil?

View file

@ -17,6 +17,8 @@
if(obj['notice']){ if(obj['notice']){
processNotification(obj['notice']); processNotification(obj['notice']);
}else if (obj['class'] == 'people'){
processPerson(obj['html']);
}else{ }else{
debug("got a " + obj['class'] + " for aspects " + obj['aspect_ids']); debug("got a " + obj['class'] + " for aspects " + obj['aspect_ids']);
@ -42,6 +44,10 @@
}); });
function processPerson(html){
$('.people#stream').prepend(html).slideDown('slow', function(){})
}
function processNotification(html){ function processNotification(html){
$('#notification').html(html).fadeIn(200).delay(4000).fadeOut(200, function(){ $(this).html("");}); $('#notification').html(html).fadeIn(200).delay(4000).fadeOut(200, function(){ $(this).html("");});
} }
@ -97,7 +103,7 @@
function processPhotoInAlbum(photoHash){ function processPhotoInAlbum(photoHash){
if (location.href.indexOf(photoHash['album_id']) == -1){ if (location.href.indexOf(photoHash['album_id']) == -1){
return ; return ;
} }›
html = "<div class=\'image_thumb\' id=\'"+photoHash['id']+"\' style=\'padding-right:3px;\'> \ html = "<div class=\'image_thumb\' id=\'"+photoHash['id']+"\' style=\'padding-right:3px;\'> \
<a href=\"/photos/"+ photoHash['id'] +"\"> \ <a href=\"/photos/"+ photoHash['id'] +"\"> \
<img alt=\"New thumbnail\" src=\""+ photoHash['thumb_url'] +"\" /> \ <img alt=\"New thumbnail\" src=\""+ photoHash['thumb_url'] +"\" /> \

View file

@ -18,7 +18,7 @@
- elsif current_user.pending_requests.find_by_person_id(person.id) - elsif current_user.pending_requests.find_by_person_id(person.id)
= link_to =t('.pending_request'), aspects_manage_path = link_to =t('.pending_request'), aspects_manage_path
- else - else
= render :partial => 'requests/new_request_to_person', :locals => {:aspects => @aspects, :person => person} = render :partial => 'requests/new_request_to_person', :locals => {:aspects => aspects, :person => person}
.info .info
= person.diaspora_handle = person.diaspora_handle

View file

@ -7,8 +7,8 @@
=t('.results_for') =t('.results_for')
%u= params[:q] %u= params[:q]
%ul#stream %ul#stream.people
- for person in @people - for person in @people
= render 'people/person', :person => person = render 'people/person', :person => person, :aspects => @aspects
= will_paginate @people = will_paginate @people

View file

@ -25,4 +25,4 @@
%h3 t('.cancel_my_account') %h3 t('.cancel_my_account')
%p %p
= t('.unhappy') #{link_to t('.cancel_my_account'), registration_path(resource_name), :confirm => t('are_you_sure'), :method => :delete}. = t('.unhappy') #{link_to t('.cancel_my_account'), registration_path(resource_name), :confirm => t('are_you_sure'), :method => :delete}.
= link_to t('.back'), :back = link_to t('back'), :back

View file

@ -1,6 +1,6 @@
%h4 %h4
= t('.invites') = t('.invites')
= link_to t('.invite_someone'), "#invite_user_pane", :class => "invite_user_button", :title => "Invite someone" = link_to t('.invite_someone'), "#invite_user_pane", :class => "invite_user_button", :title => t('.invite_someone')
= t('.invitations_left', :count => invites) = t('.invitations_left', :count => invites)
%br %br
.yo{ :style => "display:none;"} .yo{ :style => "display:none;"}

View file

@ -2,7 +2,7 @@
# licensed under the Affero General Public License version 3 or later. See # licensed under the Affero General Public License version 3 or later. See
# the COPYRIGHT file. # the COPYRIGHT file.
# #
# See config/locales/devise/devise.sv.yml for Swedish Diaspora terms. # See config/locales/diaspora/sv.yml for Swedish Diaspora terms.
sv: sv:
errors: errors:
@ -26,11 +26,16 @@ sv:
username: 'Användarnamn' username: 'Användarnamn'
password: 'Lösenord' password: 'Lösenord'
sign_in: 'Logga in' sign_in: 'Logga in'
have_a_problem: "Har du problem att komma in? Klicka här"
remember_me: "Kom ihåg mig"
signed_in: 'Inloggning ok.' signed_in: 'Inloggning ok.'
signed_out: 'Utloggning ok.' signed_out: 'Utloggning ok.'
passwords: passwords:
send_instructions: 'Du kommer att få ett ebrev med instruktioner för att återställa lösenordet inom några minuter.' send_instructions: 'Du kommer att få ett ebrev med instruktioner för att återställa lösenordet inom några minuter.'
updated: 'Ditt lösenord har ändrats och du är inloggad.' updated: 'Ditt lösenord har ändrats och du är inloggad.'
new:
forgot_password: "Glömt ditt lösenord?"
send_password_instructions: "Skicka mig information om hur jag återställer lösenordet"
confirmations: confirmations:
send_instructions: 'Du kommer att få ett ebrev med instruktioner för att verifiera ditt konto inom några minuter.' send_instructions: 'Du kommer att få ett ebrev med instruktioner för att verifiera ditt konto inom några minuter.'
confirmed: 'Ditt konto har verifierats och du är inloggad.' confirmed: 'Ditt konto har verifierats och du är inloggad.'
@ -46,14 +51,31 @@ sv:
invitation_token_invalid: 'Denna inbjudan är ej giltig!' invitation_token_invalid: 'Denna inbjudan är ej giltig!'
updated: 'Ditt lösenord är nu inställt och du är inloggad.' updated: 'Ditt lösenord är nu inställt och du är inloggad.'
mailer: mailer:
welcome: "Välkommen %{email}!"
hello: "Hej %{email}!"
confirmation_instructions: confirmation_instructions:
subject: 'Instruktioner för att verifiera ditt konto.' subject: 'Instruktioner för att aktivera ditt konto'
you_can_confirm: "Klicka på länken nedan för att aktivera ditt konto:"
confirm: "Aktivera mitt konto"
reset_password_instructions: reset_password_instructions:
subject: 'Instruktioner för att återställa ditt lösenord.' subject: 'Instruktioner för att återställa lösenordet'
someone_requested: "Du har efterfrågat en länk för att återställa ditt lösenord. För att fullfölja det, klicka på länken neda."
change: "Återställ mitt lösenord"
wont_change: "Dit lösenord kommer inte ändras förrän du klickat på länken och ändrat det."
ignore: "Om det inte är du som vill byta lösenord så kan du ignorera det här mailet."
unlock_instructions: unlock_instructions:
subject: 'Instruktioner för att låsa upp ditt konto.' subject: 'Instruktioner för upplåsning'
account_locked: "Ditt konto har låsts eftersom du eller någon annan har angett fel lösenord för många gånger."
click_to_unlock: "Klicka på länken nedan för att låsa upp ditt konto:"
unlock: "Lås upp mitt konto"
invitation: invitation:
subject: 'En vän vill att du ska gå med i Diaspora!' subject: 'En vän vill att du ska gå med i Diaspora!'
has_invited_you: "%{name} har bjudit in dig till Diaspora"
have_invited_you: "%{names} har bjudit in dig till Diaspora"
accept_at: ", gå till %{url} för att acceptera din inbjudan."
accept: "Acceptera inbjudan"
ignore: "Om du inte vill gå med i Diaspora kan du ignorera detta mail."
no_account_till: "Ditt konto kommer inte skapas förrän du klickat på knappen ovan och skapat ett nytt konto."
shared: shared:
links: links:
sign_in: 'Logga in' sign_in: 'Logga in'

View file

@ -223,7 +223,6 @@ en:
leave_blank: "(leave blank if you don't want to change it)" leave_blank: "(leave blank if you don't want to change it)"
password_to_confirm: "(we need your current password to confirm your changes)" password_to_confirm: "(we need your current password to confirm your changes)"
unhappy: "Unhappy?" unhappy: "Unhappy?"
back: "Back"
update: "Update" update: "Update"
cancel_my_account: "Cancel my account" cancel_my_account: "Cancel my account"
closed: "Signups are closed on this Diaspora pod." closed: "Signups are closed on this Diaspora pod."
@ -264,6 +263,7 @@ en:
request_people: "If you'd like, you can request to place him/her in one of your aspects." request_people: "If you'd like, you can request to place him/her in one of your aspects."
already_requested: "You have already sent a request to %{name}." already_requested: "You have already sent a request to %{name}."
does_not_exist: "Person does not exist!" does_not_exist: "Person does not exist!"
not_connected: "You are not connected with this person"
edit: edit:
info_available_to: "This info will be available to whomever you connect with on Diaspora." info_available_to: "This info will be available to whomever you connect with on Diaspora."
your_profile: "Your profile" your_profile: "Your profile"

View file

@ -20,7 +20,8 @@
# request: (vän-) förfrågan # request: (vän-) förfrågan
# profile: profil # profile: profil
# seed: frö # seed: frö
# # contact: kontakt
sv: sv:
settings: "Inställningar" settings: "Inställningar"
@ -88,13 +89,13 @@ sv:
share_with_all: "Dela på alla sidor" share_with_all: "Dela på alla sidor"
share_with: "Dela med %{aspect}" share_with: "Dela med %{aspect}"
all: "alla" all: "alla"
aspect_friends: aspect_contacts:
add_friends: "lägg till vänner" add_contacts: "lägg till kontakter"
everyone: "Alla" everyone: "Alla"
add_to: "lägg till i %{aspect}" add_to: "lägg till i %{aspect}"
invitations: invitations:
invites: "Inbjudningar" invites: "Inbjudningar"
invite_a_friend: "Bjud in en vän" invite_someone: "Bjud in en kontakt"
invitations_left: "(%{count} kvar)" invitations_left: "(%{count} kvar)"
reshare: reshare:
reshare: "Återdela" reshare: "Återdela"
@ -110,18 +111,18 @@ sv:
notification: notification:
new: "Ny %{type} från %{from}" new: "Ny %{type} från %{from}"
aspects: aspects:
no_friends_message: no_contacts_message:
nobody: "Vi vet att du har vänner, bjud in dem till Diaspora!" nobody: "Vi vet att du har kontakter, bjud in dem till Diaspora!"
nobody_in_aspect: "Sidan '%{aspect_name}' är tom." nobody_in_aspect: "Sidan '%{aspect_name}' är tom."
add_friend: "Lägg till en vän" add_contact: "Lägg till en kontakt"
add_friend_to: "Lägg till en vän i %{aspect_name}" add_contact_to: "Lägg till en kontakt i %{aspect_name}"
invite: "Bjud in en vän till Diaspora!" invite: "Bjud in en kontakt till Diaspora!"
no_posts_message: no_posts_message:
start_talking: "Ingen har sagt något än. Bli först!" start_talking: "Ingen har sagt något än. Bli först!"
manage: manage:
add_a_new_aspect: "Lägg till en ny sida" add_a_new_aspect: "Lägg till en ny sida"
add_a_new_friend: "Lägg till en ny vän" add_a_new_contact: "Lägg till en ny kontakt"
requests: "Vänförfrågningar" requests: "Kontaktförfrågningar"
no_requests: "Inga nya förfrågningar" no_requests: "Inga nya förfrågningar"
manage_aspects: "Hantera sidor" manage_aspects: "Hantera sidor"
drag_to_add: "Dra för att lägga till personer" drag_to_add: "Dra för att lägga till personer"
@ -136,10 +137,10 @@ sv:
success: "%{name} är nu borttagen." success: "%{name} är nu borttagen."
update: update:
success: "Din sida %{name} är nu ändrad." success: "Din sida %{name} är nu ändrad."
move_friend: move_contact:
failure: "fungerade inte %{inspect}" failure: "fungerade inte %{inspect}"
success: "Personen flyttades till den nya sidan" success: "Personen flyttades till den nya sidan"
error: "Kunde inte flytta vän: %{inspect}" error: "Kunde inte flytta kontakt: %{inspect}"
add_to_aspect: add_to_aspect:
failure: "Misslyckades med att lägga in personen på den nya sidan." failure: "Misslyckades med att lägga in personen på den nya sidan."
success: "Personen tillagt på sidan." success: "Personen tillagt på sidan."
@ -152,7 +153,7 @@ sv:
failure: "Misslyckades med att ta bort personen från vald sida" failure: "Misslyckades med att ta bort personen från vald sida"
users: users:
edit: edit:
invite_friends: "Bjud in en vän" invite_contacts: "Bjud in en kontakt"
export_data: "Exportera data" export_data: "Exportera data"
close_account: "Stäng kontot" close_account: "Stäng kontot"
change_language: "Ändra språk" change_language: "Ändra språk"
@ -178,7 +179,7 @@ sv:
add: "Lägg till" add: "Lägg till"
step_3: step_3:
your_services: "Dina tjänster" your_services: "Dina tjänster"
description: 'Anslut dina befintliga tjänster till ditt Diaspora-konto. Du kommer att kunna skicka meddelanden genom dessa om du väljer "gör publik." på sidan för alla vänner.' description: 'Anslut dina befintliga tjänster till ditt Diaspora-konto. Du kommer att kunna skicka meddelanden genom dessa om du väljer "gör publik." på sidan för alla kontakter.'
step_4: step_4:
set_up: "Nu är guiden klar, %{name}!" set_up: "Nu är guiden klar, %{name}!"
ready_to_share: "Du är nu redo att börja dela med " ready_to_share: "Du är nu redo att börja dela med "
@ -234,12 +235,19 @@ sv:
sign_up_for_diaspora: "Gå med i Diaspora" sign_up_for_diaspora: "Gå med i Diaspora"
create: create:
success: "Du har nu gått med i Diaspora!" success: "Du har nu gått med i Diaspora!"
edit:
edit: "Ändra %{name}"
leave_blank: "(lämna tomt om du inte vill ändra det)"
password_to_confirm: "(det nuvarande lösenordet krävs för att bekräfta ändringarna)"
unhappy: "Missnöjd?"
update: "Uppdatera"
cancel_my_account: "Avsluta mitt konto"
invitations: invitations:
create: create:
sent: 'Din inbjudan är nu skickad.' sent: 'Din inbjudan är nu skickad.'
no_more: 'Du har inga fler inbjudningar.' no_more: 'Du har inga fler inbjudningar.'
already_sent: 'Du har redan bjudit in denna person.' already_sent: 'Du har redan bjudit in denna person.'
already_friends: 'Du är redan vän med den här personen' already_friends: 'Den här personen finns redan bland dina kontakter'
new: new:
invite_someone_to_join: "Bjud in en än till Diaspora!" invite_someone_to_join: "Bjud in en än till Diaspora!"
if_they_accept_info: "om de accepterar så kommer de att läggas till på den sida du valde" if_they_accept_info: "om de accepterar så kommer de att läggas till på den sida du valde"
@ -257,21 +265,19 @@ sv:
destroy: "Ta bort" destroy: "Ta bort"
helper: helper:
no_message_to_display: "Inget meddelande att visa." no_message_to_display: "Inget meddelande att visa."
index:
status_messages: "statusmeddelanden"
people: people:
person: person:
pending_request: "väntande förfrågningar" pending_request: "väntande förfrågningar"
already_friends: "Redan vänner" already_friends: "Finns i dina kontakter"
thats_you: "Detta är du!" thats_you: "Detta är du!"
add_contact: "lägg till kontakt"
index: index:
results_for: "sökresultat för" results_for: "sökresultat för"
show: show:
no_posts: "inga meddelanden att visa!" no_posts: "inga meddelanden att visa!"
add_friend: "lägg till vän" not_friends: "%{name} finns inte bland dina kontakter"
not_friends: "Du ärr närvarande inte vän med %{name}" request_people: "Om du känner för det så skulle du kunna skicka en kontaktförfrågan."
request_people: "Om du känner för det så skulle du kunna skicka en vänförfrågan." already_requested: "Du har redan skickat en kontaktförfrågan till %{name}."
already_requested: "Du har redan skickat en vänförfrågan till %{name}."
does_not_exist: "Den här personen finns inte!" does_not_exist: "Den här personen finns inte!"
edit: edit:
info_available_to: "Den här informationen kommer vara synlig för alla som du ansluter till på diaspora." info_available_to: "Den här informationen kommer vara synlig för alla som du ansluter till på diaspora."
@ -291,7 +297,7 @@ sv:
updated: "Profilen är uppdaterad" updated: "Profilen är uppdaterad"
failed: "Misslyckades med att uppdatera profilen" failed: "Misslyckades med att uppdatera profilen"
profile_sidebar: profile_sidebar:
remove_friend: "ta bort vän" remove_contact: "ta bort kontakt"
edit_my_profile: "Ändra min profil" edit_my_profile: "Ändra min profil"
last_seen: "senast sedd: %{how_long_ago}" last_seen: "senast sedd: %{how_long_ago}"
bio: "bio" bio: "bio"
@ -301,16 +307,16 @@ sv:
results_for: " resultat för %{params}" results_for: " resultat för %{params}"
people_on_pod_are_aware_of: " personer på denna plats är medvetna om att" people_on_pod_are_aware_of: " personer på denna plats är medvetna om att"
requests: requests:
new_request: manage_aspect_contacts:
add_a_new_friend_to: "Lägg till en vän till" add_a_new_contact_to: "Lägg till en kontakt till"
enter_a_diaspora_username: "Ange ett användarnamn:" enter_a_diaspora_username: "Ange ett användarnamn:"
your_diaspora_username_is: "Din Diaspora-adress är: %{diaspora_handle}" your_diaspora_username_is: "Din Diaspora-adress är: %{diaspora_handle}"
friends_username: "Vännens Diaspora-adress" contact_username: "Kontaktens Diaspora-adress"
create_request: "Skapa förfrågan" create_request: "Skapa förfrågan"
destroy: destroy:
success: "Ni är nu vänner." success: "Kontakten är nu tillagd."
error: "Var god välj en aspekt!" error: "Var god välj en aspekt!"
ignore: "Ignorerade vänförfrågan." ignore: "Ignorerade kontaktförfrågan."
create: create:
tried: "vi gjorde vårat bästa för att skicka meddelandet till %{account}" tried: "vi gjorde vårat bästa för att skicka meddelandet till %{account}"
services: services:
@ -332,13 +338,13 @@ sv:
love: "hälsningar," love: "hälsningar,"
diaspora: "Diasporas mailrobot" diaspora: "Diasporas mailrobot"
new_request: new_request:
subject: "ny Diaspora vänförfågan från %{from}" subject: "ny kontaktförfrågan från %{from}"
just_sent_you: "skickade nyss en vänförfrågan till dig på Diaspora" just_sent_you: "skickade nyss en kontaktförfrågan till dig på Diaspora"
try_it_out: "Du borde verkligen överväga att kolla upp detta." try_it_out: "Du borde verkligen överväga att kolla upp detta."
sign_in: "logga in här" sign_in: "logga in här"
request_accepted: request_accepted:
subject: "%{name} har accepterat din vänförfrågan på Diaspora" subject: "%{name} har accepterat din kontaktförfrågan på Diaspora"
accepted: "har accepterat din vänförfrågan. Denne finns nu på " accepted: "har accepterat din kontaktförfrågan. Denne finns nu på "
aspect: "sidan." aspect: "sidan."
# The following is from the rails-i18n project at http://github.com/svenfuchs/rails-i18n # The following is from the rails-i18n project at http://github.com/svenfuchs/rails-i18n

View file

@ -2,6 +2,7 @@ Feature: managing contact requests
Background: Background:
Given I am signed in Given I am signed in
And I have an aspect called "Family"
And I have one contact request And I have one contact request
Scenario: seeing contact requests Scenario: seeing contact requests
@ -10,8 +11,6 @@ Feature: managing contact requests
@javascript @wip @javascript @wip
Scenario: accepting a contact request Scenario: accepting a contact request
Given I have an aspect called "Family"
When I am on the home page When I am on the home page
And I follow "Manage (1)" And I follow "Manage (1)"
Then I should see 1 contact request Then I should see 1 contact request

View file

@ -11,7 +11,7 @@ end
Given 'I am signed in' do Given 'I am signed in' do
@me ||= Factory(:user) @me ||= Factory(:user, :getting_started => false)
When %(I go to the new user session page) When %(I go to the new user session page)
When %(I fill in "Username" with "#{@me.username}") When %(I fill in "Username" with "#{@me.username}")
When %(I fill in "Password" with "#{@me.password}") When %(I fill in "Password" with "#{@me.password}")

View file

@ -14,10 +14,11 @@ end
Given /^I have one contact request$/ do Given /^I have one contact request$/ do
other_user = make_user other_user = make_user
other_user.aspects.create!(:name => "meh") other_aspect = other_user.aspects.create!(:name => "meh")
other_user.reload other_user.send_contact_request_to(@me.person, other_aspect)
other_user.send_contact_request_to(@me.person, other_user.aspects.first) other_user.reload
other_aspect.reload
@me.reload @me.reload
end end

View file

@ -8,11 +8,11 @@ module Diaspora
def send_contact_request_to(desired_contact, aspect) def send_contact_request_to(desired_contact, aspect)
# should have different exception types for these? # should have different exception types for these?
raise "You cannot connect yourself" if desired_contact.nil? raise "You cannot connect yourself" if desired_contact.nil?
raise "You have already sent a contact request to that person!" if self.pending_requests.detect{ raise "You have already sent a contact request to that person!" if self.pending_requests.detect {
|x| x.to == desired_contact} |x| x.to == desired_contact }
raise "You are already connected to that person!" if contact_for desired_contact raise "You are already connected to that person!" if contact_for desired_contact
request = Request.instantiate( request = Request.instantiate(
:to => desired_contact, :to => desired_contact,
:from => self.person, :from => self.person,
:into => aspect) :into => aspect)
if request.save if request.save
@ -39,8 +39,8 @@ module Diaspora
end end
def accept_and_respond(contact_request_id, aspect_id) def accept_and_respond(contact_request_id, aspect_id)
request = pending_requests.find!(contact_request_id) request = pending_requests.find!(contact_request_id)
requester = request.from requester = request.from
reversed_request = accept_contact_request(request, aspect_by_id(aspect_id)) reversed_request = accept_contact_request(request, aspect_by_id(aspect_id))
dispatch_contact_acceptance reversed_request, requester dispatch_contact_acceptance reversed_request, requester
end end
@ -72,7 +72,7 @@ module Diaspora
self.save self.save
Request.send_request_accepted(self, contact_request.from, destination_aspect) Request.send_request_accepted(self, contact_request.from, destination_aspect)
#this is a new contact request #this is a new contact request
elsif !request_from_me?(contact_request) elsif !request_from_me?(contact_request)
self.pending_requests << contact_request self.pending_requests << contact_request
self.save! self.save!
@ -94,19 +94,23 @@ module Diaspora
def remove_contact(bad_contact) def remove_contact(bad_contact)
contact = contact_for(bad_contact) contact = contact_for(bad_contact)
contact.aspects.each{|aspect| contact.aspects.each do |aspect|
contact.aspects.delete(aspect) contact.aspects.delete(aspect)
aspect.posts.each { |post| aspect.posts.each do |post|
aspect.post_ids.delete(post.id) if post.person == bad_contact aspect.post_ids.delete(post.id) if post.person == bad_contact
} end
aspect.save aspect.save
} end
self.raw_visible_posts.find_all_by_person_id( bad_contact.id ).each{|post| self.raw_visible_posts.find_all_by_person_id(bad_contact.id).each do |post|
self.visible_post_ids.delete( post.id ) self.visible_post_ids.delete(post.id)
post.user_refs -= 1 post.user_refs -= 1
(post.user_refs > 0 || post.person.owner.nil? == false) ? post.save : post.destroy if (post.user_refs > 0) || post.person.owner.nil? == false
} post.save
else
post.destroy
end
end
self.save self.save
raise "Contact not deleted" unless contact.destroy raise "Contact not deleted" unless contact.destroy
bad_contact.save bad_contact.save
@ -133,7 +137,7 @@ module Diaspora
end end
def requests_for_me def requests_for_me
pending_requests.select{|req| req.to == self.person} pending_requests.select { |req| req.to == self.person }
end end
end end
end end

1266
spec/fixtures/users.yaml vendored

File diff suppressed because it is too large Load diff

View file

@ -27,7 +27,7 @@ module HelperMethods
end end
def connect_users(user1, aspect1, user2, aspect2) def connect_users(user1, aspect1, user2, aspect2)
request = user1.send_contact_request_to(user2.person, aspect1) user1.send_contact_request_to(user2.person, aspect1)
user1.reload user1.reload
aspect1.reload aspect1.reload

View file

@ -0,0 +1,13 @@
# Copyright (c) 2010, Diaspora Inc. This file is
# licensed under the Affero General Public License version 3 or later. See
# the COPYRIGHT file.
#
require 'spec_helper'
describe SocketsHelper do
describe '#obj_id' do
end
end

View file

@ -100,6 +100,7 @@ describe User do
it 'should be remove a post if the noone links to it' do it 'should be remove a post if the noone links to it' do
person = user2.person person = user2.person
user2.delete user2.delete
person.reload
lambda {user.disconnect(person)}.should change(Post, :count).by(-1) lambda {user.disconnect(person)}.should change(Post, :count).by(-1)
end end