Class: UnderOs::Sharing

Inherits:
Object
  • Object
show all
Defined in:
lib/under_os/sharing.rb,
lib/under_os/sharing/controller.rb,
lib/under_os/receivers/instagram.rb,
lib/under_os/sharing/interaction.rb

Defined Under Namespace

Classes: Instagram, Interaction

Constant Summary collapse

VERSION =
'1.0.2'
CUSTOM_RECEIVERS =
{
  instagram: UnderOs::Sharing::Instagram
}
NATIVE_RECEIVERS =
{
  facebook: UIActivityTypePostToFacebook,
  twitter:  UIActivityTypePostToTwitter,
  flickr:   UIActivityTypePostToFlickr,
  vimeo:    UIActivityTypePostToVimeo,
  weibo:    UIActivityTypePostToWeibo,
  message:  UIActivityTypeMessage,
  email:    UIActivityTypeMail,
  print:    UIActivityTypePrint,
  copy:     UIActivityTypeCopyToPasteboard,
  contact:  UIActivityTypeAssignToContact,
  save:     UIActivityTypeSaveToCameraRoll,
  reading:  UIActivityTypeAddToReadingList,
  airdrop:  UIActivityTypePostToTencentWeibo
}

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Sharing

Returns a new instance of Sharing.



5
6
7
# File 'lib/under_os/sharing.rb', line 5

def initialize(options={})
  @options = options
end

Instance Method Details

#controller_for(items) ⇒ Object



3
4
5
6
7
8
# File 'lib/under_os/sharing/controller.rb', line 3

def controller_for(items)
  UIActivityViewController.alloc.tap do |controller|
    controller.initWithActivityItems(items, applicationActivities: custom_activities)
    controller.excludedActivityTypes = excluded_activities
  end
end

#custom_activitiesObject



10
11
12
13
14
15
16
# File 'lib/under_os/sharing/controller.rb', line 10

def custom_activities
  [].tap do |activities|
    CUSTOM_RECEIVERS.each do |key, receiver|
      activities << receiver.alloc.init if receivers_include(key)
    end
  end
end

#excluded_activitiesObject



18
19
20
21
22
23
24
# File 'lib/under_os/sharing/controller.rb', line 18

def excluded_activities
  [].tap do |activities|
    NATIVE_RECEIVERS.each do |key, receiver|
      activities << receiver unless receivers_include(key)
    end
  end
end

#items_from(objects) ⇒ Object



15
16
17
# File 'lib/under_os/sharing.rb', line 15

def items_from(objects)
  objects
end

#receivers_include(key) ⇒ Object



26
27
28
29
30
31
32
33
34
# File 'lib/under_os/sharing/controller.rb', line 26

def receivers_include(key)
  if @options.has_key?(:receivers)
    @options[:receivers].map(&:to_sym).incude?(key)
  elsif @options.has_key?(:exclude)
    ! @options[:exclude].map(&:to_sym).include?(key)
  else
    true # fallback to inclusion
  end
end

#share(*objects, &block) ⇒ Object



9
10
11
12
13
# File 'lib/under_os/sharing.rb', line 9

def share(*objects, &block)
  controller = controller_for(items_from(objects))
  UnderOs::App.history.current_page._
    .presentViewController(controller, animated: true, completion: block)
end