view release on metacpan or search on metacpan
lib/Mojo/Webqq/Discuss.pm view on Meta::CPAN
return 1;
}
}
return;
}
sub is_empty{
my $self = shift;
return !(ref($self->member) eq "ARRAY"?0+@{$self->member}:0);
}
sub update_discuss_member {
my $self = shift;
$self->client->update_discuss_member($self,@_);
}
sub update{
my $self = shift;
my $hash = shift;
for(grep {substr($_,0,1) ne "_"} keys %$hash){
if($_ eq "member" and exists $hash->{member} and ref $hash->{member} eq "ARRAY"){
next if not @{$hash->{member}};
my @member = map {ref $_ eq "Mojo::Webqq::Discuss::Member"?$_:Mojo::Webqq::Discuss::Member->new($_)} @{$hash->{member}};
if( $self->is_empty() ){
$self->member(\@member);
}
else{
lib/Mojo/Webqq/Discuss/Member.pm view on Meta::CPAN
sub displayname {
my $self = shift;
my $f = $self->client->search_friend(id=>$self->id);
if(defined $f){
return $f->markname // $self->name;
}
else{
return $self->name;
}
}
sub update{
my $self = shift;
my $hash = shift;
for(grep {substr($_,0,1) ne "_"} keys %$hash){
if(exists $hash->{$_}){
if(defined $hash->{$_} and defined $self->{$_}){
if($hash->{$_} ne $self->{$_}){
my $old_property = $self->{$_};
my $new_property = $hash->{$_};
$self->{$_} = $hash->{$_};
$self->client->emit("discuss_member_property_change"=>$self,$_,$old_property,$new_property);
lib/Mojo/Webqq/Friend.pm view on Meta::CPAN
my $self = shift;
return $self->{uid} if defined $self->{uid};
return $self->client->get_qq_from_id($self->id);
};
sub qq {$_[0]->uid}
sub nick {$_[0]->name}
sub displayname {
my $self = shift;
return defined $self->markname?$self->markname:$self->name;
}
sub update{
my $self = shift;
my $hash = shift;
for(grep {substr($_,0,1) ne "_"} keys %$hash){
if(exists $hash->{$_}){
if(defined $hash->{$_} and defined $self->{$_}){
if($hash->{$_} ne $self->{$_}){
my $old_property = $self->{$_};
my $new_property = $hash->{$_};
$self->{$_} = $hash->{$_};
$self->client->emit("friend_property_change"=>$self,$_,$old_property,$new_property);
lib/Mojo/Webqq/Group.pm view on Meta::CPAN
}
}
return;
}
sub is_empty{
my $self = shift;
return !(ref($self->member) eq "ARRAY"?0+@{$self->member}:0);
}
sub update_group_member_ext {
my $self = shift;
$self->client->update_group_member_ext($self,@_);
}
sub update_group_member {
my $self = shift;
$self->client->update_group_member($self,@_);
}
sub update{
my $self = shift;
my $hash = shift;
for(grep {substr($_,0,1) ne "_"} keys %$hash){
if($_ eq "member" and ref $hash->{member} eq "ARRAY"){
next if not @{$hash->{member}};
my @member = map {ref $_ eq "Mojo::Webqq::Group::Member"?$_:Mojo::Webqq::Group::Member->new($_)} @{$hash->{member}};
if( $self->is_empty() ){
$self->member(\@member);
}
else{
lib/Mojo/Webqq/Group/Member.pm view on Meta::CPAN
}
else{
return defined $self->card?$self->card:$self->name;
}
}
else{
return defined $self->card?$self->card:$self->name;
}
}
sub update{
my $self = shift;
my $hash = shift;
for(grep {substr($_,0,1) ne "_"} keys %$hash){
if(exists $hash->{$_}){
if(defined $hash->{$_} and defined $self->{$_}){
if($hash->{$_} ne $self->{$_}){
my $old_property = $self->{$_};
my $new_property = $hash->{$_};
$self->{$_} = $hash->{$_};
$self->client->emit("group_member_property_change"=>$self,$_,$old_property,$new_property);
lib/Mojo/Webqq/Model.pm view on Meta::CPAN
for( @{$self->discuss}){
$_->update_discuss_member(is_blocking=>1,) if $_->is_empty;
}
}
my @member = map {@{$_->member}} grep {ref $_->member eq "ARRAY"} @{$self->discuss};
for (@member){
$callback->($self,$_);
}
}
sub update_user {
my $self = shift;
my $is_blocking = ! shift;
$self->info("æ´æ°ä¸ªäººä¿¡æ¯...\n");
my $handle = sub{
my $user_info = shift;
unless ( defined $user_info ) {
$self->warn("æ´æ°ä¸ªäººä¿¡æ¯å¤±è´¥\n");
$self->user(Mojo::Webqq::User->new({id=>$self->uid,uid=>$self->uid}));
$self->emit("model_update"=>"user",0);
return;
lib/Mojo/Webqq/Model.pm view on Meta::CPAN
my $f = $self->search_friend(id => $friend->id);
if(defined $f){
%$f = %$friend;
}
else{
push @{$self->friend},$friend;
}
return $self;
}
sub update_friend_ext {
my $self = shift;
my %p = @_;
$p{is_blocking} = 1 if not defined $p{is_blocking} ;
if ( not $self->is_support_model_ext){
$self->warn("æ æ³æ¯æè·åæ©å±ä¿¡æ¯");
return;
}
my $handle = sub{
my $friends_ext_info = shift;
if(defined $friends_ext_info and ref $friends_ext_info eq "ARRAY"){
lib/Mojo/Webqq/Model.pm view on Meta::CPAN
}
};
if($p{is_blocking}){
my $friends_ext_info = $self->_get_user_friends_ext();
$handle->($friends_ext_info);
}
else{
$self->_get_user_friends_ext($handle);
}
}
sub update_friend {
my $self = shift;
if(ref $_[0] eq "Mojo::Webqq::Friend"){
my $friend = shift;
my %p = @_;
$p{is_blocking} = 1 if not defined $p{is_blocking};
$self->info("æ´æ°å¥½å [ " . $friend->displayname . " ] ä¿¡æ¯...");
my $handle = sub{
my $friend_info = shift;
if(defined $friend_info){$friend->update($friend_info);}
else{$self->warn("æ´æ°å¥½å [ " . $friend->displayname . " ] ä¿¡æ¯å¤±è´¥...");}
lib/Mojo/Webqq/Model.pm view on Meta::CPAN
my $group = shift;
$self->die("䏿¯æçæ°æ®ç±»å") if ref $group ne "Mojo::Webqq::Group";
for(my $i=0;@{$self->group};$i++){
if($group->id eq $self->group->[$i]->id){
splice @{$self->group},$i,1;
return 1;
}
}
return 0;
}
sub update_group_ext {
my $self = shift;
if ( not $self->is_support_model_ext){
$self->warn("æ æ³æ¯æè·åæ©å±ä¿¡æ¯");
return;
}
return if @{ $self->group } == 0;
my $group;
$group = shift if ref $_[0] eq "Mojo::Webqq::Group";
my %p = @_;
$p{is_blocking} = 1 if not defined $p{is_blocking};
lib/Mojo/Webqq/Model.pm view on Meta::CPAN
else{$self->warn("æ´æ°ç¾¤æ©å±ä¿¡æ¯å¤±è´¥");$self->emit("model_update","group_ext",0);}
};
if($p{is_blocking}){
my $group_list_ext = $self->_get_group_list_info_ext();
$handle->($group_list_ext);
}
else{
$self->_get_group_list_info_ext($handle);
}
}
sub update_group_member_ext {
my $self = shift;
my $group = shift;
if ( not $self->is_support_model_ext){
$self->warn("群ç»[ ". $group->name . " ]å½åæ æ³æ¯æè·åæ©å±ä¿¡æ¯");
return;
}
$self->die("䏿¯æçæ°æ®ç±»å") if ref $group ne "Mojo::Webqq::Group";
if(not defined $group->uid){
$self->warn("群ç»[ ". $group->name . " ]æªå
嫿æçuidï¼æ æ³æ´æ°ç¾¤æåæ©å±ä¿¡æ¯");
return;
lib/Mojo/Webqq/Model.pm view on Meta::CPAN
};
if($p{is_blocking}){
my $group_info_ext = $self->_get_group_info_ext($group->uid);
$handle->($group_info_ext);
}
else{
$self->_get_group_info_ext($group->uid,$handle);
}
}
sub update_group_member {
my $self = shift;
my $group = shift;
$self->die("䏿¯æçæ°æ®ç±»å") if ref $group ne "Mojo::Webqq::Group";
my %p = @_;
$p{is_blocking} = 1 if not defined $p{is_blocking};
$p{is_update_group_member_ext} = 1 if not defined $p{is_update_group_member_ext};
my $handle = sub{
my $group_info = shift;
if(defined $group_info){
$self->info("æ´æ°ç¾¤ç»[ ". $group->name . " ]æåä¿¡æ¯");
lib/Mojo/Webqq/Model.pm view on Meta::CPAN
};
if($p{is_blocking}){
my $group_info = $self->_get_group_info($group->code);
$handle->($group_info);
}
else{
$self->_get_group_info($group->code,$handle);
}
}
sub update_group {
my $self = shift;
if(ref $_[0] eq "Mojo::Webqq::Group"){
my $group = shift;
my %p = @_;
$p{is_blocking} = 1 if not defined $p{is_blocking};
$p{is_update_group_member} = 1 if not defined $p{is_update_group_member} ;
$p{is_update_group_ext} = $p{is_blocking} if not defined $p{is_update_group_ext} ;
$p{is_update_group_member_ext} = $p{is_update_group_ext} && $p{is_blocking} if not defined $p{is_update_group_member_ext} ;
my $handle = sub{
my $group_info = shift;
lib/Mojo/Webqq/Model.pm view on Meta::CPAN
if($discuss->id eq $self->discuss->[$i]->id){
splice @{$self->discuss},$i,1;
return 1;
}
}
return 0;
}
sub add_discuss_member {}
sub update_discuss_member{
my $self = shift;
my $discuss = shift;
$self->die("䏿¯æçæ°æ®ç±»å") if ref $discuss ne "Mojo::Webqq::Discuss";
$self->info("æ´æ°è®¨è®ºç»[ ". $discuss->name . " ]æåä¿¡æ¯");
my %p = @_;
$p{is_blocking} = 1 if not defined $p{is_blocking};
my $handle = sub{
my $discuss_info = shift;
if(defined $discuss_info){
if(ref $discuss_info->{member} eq 'ARRAY'){
lib/Mojo/Webqq/Model.pm view on Meta::CPAN
if($p{is_blocking}){
my $discuss_info = $self->_get_discuss_info($discuss->id);
$handle->($discuss_info);
}
else{
$self->_get_discuss_info($discuss->id,$handle);
}
}
sub update_discuss {
my $self = shift;
if(ref $_[0] eq "Mojo::Webqq::Discuss"){
my $discuss = shift;
my %p = @_;
$self->info("æ´æ°è®¨è®ºç»[ ". $discuss->name . " ]ä¿¡æ¯");
$p{is_blocking} = 1 if not defined $p{is_blocking};
my $handle = sub{
my $discuss_info = shift;
if(defined $discuss_info){
if(ref $discuss_info->{member} eq 'ARRAY'){
lib/Mojo/Webqq/Recent/Discuss.pm view on Meta::CPAN
package Mojo::Webqq::Recent::Discuss;
use strict;
use Mojo::Webqq::Base 'Mojo::Webqq::Model::Base';
has [qw(
did
type
)];
sub update{
my $self = shift;
my $hash = shift;
for(keys %$self){
$self->{$_} = $hash->{$_} if exists $hash->{$_} ;
}
$self;
}
1;
lib/Mojo/Webqq/Recent/Friend.pm view on Meta::CPAN
package Mojo::Webqq::Recent::Friend;
use strict;
use Mojo::Webqq::Base 'Mojo::Webqq::Model::Base';
has [qw(
id
type
)];
sub update{
my $self = shift;
my $hash = shift;
for(keys %$self){
$self->{$_} = $hash->{$_} if exists $hash->{$_} ;
}
$self;
}
1;
lib/Mojo/Webqq/Recent/Group.pm view on Meta::CPAN
package Mojo::Webqq::Recent::Group;
use strict;
use Mojo::Webqq::Base 'Mojo::Webqq::Model::Base';
has [qw(
gid
type
)];
sub update{
my $self = shift;
my $hash = shift;
for(keys %$self){
$self->{$_} = $hash->{$_} if exists $hash->{$_} ;
}
$self;
}
1;