diff options
| author | Teddy Wing | 2016-09-17 18:23:47 -0400 |
|---|---|---|
| committer | Teddy Wing | 2016-09-17 18:23:47 -0400 |
| commit | 6cd7b7da10759eb88e5ff3c4dd49a60ac8dacf3b (patch) | |
| tree | eae7e351fb45f9cc34355e1f2b8f0d68b2af9fc3 | |
| parent | e0fa2d455da59a40710f87c6f20b8ea891857411 (diff) | |
| parent | 39633259cc8ece82b93f396f2e675946576b7128 (diff) | |
| download | irssi-slack-profile-6cd7b7da10759eb88e5ff3c4dd49a60ac8dacf3b.tar.bz2 | |
Merge branch 'profile-field-completion'
| -rw-r--r-- | TODO | 2 | ||||
| -rw-r--r-- | slack_profile.pl | 59 |
2 files changed, 50 insertions, 11 deletions
@@ -16,7 +16,7 @@ v Get the requested user's GitHub URL and Gigster Karma fields (needs users.prof v3: v Add a command to set/change the current user's profile fields -- Profile field completion (see https://github.com/irssi/scripts.irssi.org/blob/22060fc4669627a9859c92efa2d6651e3673d494/scripts/go.pl) +v Profile field completion (see https://github.com/irssi/scripts.irssi.org/blob/22060fc4669627a9859c92efa2d6651e3673d494/scripts/go.pl) - Pad colons v4: diff --git a/slack_profile.pl b/slack_profile.pl index 14e96dd..1f9f3a7 100644 --- a/slack_profile.pl +++ b/slack_profile.pl @@ -166,10 +166,40 @@ sub underscorize { return $result; } +sub complete_profile_field { + my ($complist, $window, $word, $linestart, $want_space) = @_; + my $slash = Irssi::parse_special('$k'); + + return unless $linestart =~ /^\Q${slash}\Eslack_profile_set\b/i; + + my @profile_fields = qw(first_name last_name email phone skype title); + + if ($window->{'active_server'}) { + my $user = find_user($window->{'active_server'}->{'nick'}); + + for my $custom_field (keys %{$user->{'fields'}}) { + push @profile_fields, underscorize($user->{'fields'}->{$custom_field}->{'label'}); + } + } + + if ($word ne '') { + for my $field (@profile_fields) { + if ($field =~ /^\Q${word}\E/i) { + push @$complist, $field; + } + } + } + else { + @$complist = @profile_fields; + } + + Irssi::signal_stop(); +} + sub update_user_profile { - my ($key, $value) = @_; + my ($nick, $key, $value) = @_; - my $user = find_user($server->{'nick'}); + my $user = find_user($nick); my @profile_fields = qw(first_name last_name email phone skype title); @@ -194,10 +224,13 @@ sub update_user_profile { } sub cmd_set { - my ($data) = @_; + my ($data, $server) = @_; my ($key, $value) = split /\s+/, $data, 2; + my $nick = $server->{'nick'}; - update_user_profile($key, $value); + if ($key) { + update_user_profile($nick, $key, $value); + } } sub find_user { @@ -215,6 +248,16 @@ sub find_user { for my $user (@users_list) { if ($user->{'name'} eq $username) { + unless (exists $user->{'fields'}) { + my $profile = fetch_user_profile($user); + $user->{'fields'} = $profile->{'fields'}; + } + + unless (exists $user->{'presence'}) { + my $presence = fetch_user_presence($user); + $user->{'presence'} = $presence; + } + return $user; } } @@ -273,12 +316,6 @@ sub swhois { $username =~ s/^@//; if (my $user = find_user($username)) { - my $profile = fetch_user_profile($user); - $user->{'fields'} = $profile->{'fields'}; - - my $presence = fetch_user_presence($user); - $user->{'presence'} = $presence; - print_whois($user); } } @@ -290,5 +327,7 @@ Irssi::command_bind('slack_profile_set', 'cmd_set'); Irssi::command_bind('help', 'help'); +Irssi::signal_add('complete word', 'complete_profile_field'); + Irssi::settings_add_str('slack_profile', 'slack_profile_token', ''); |
