100 lines
3.8 KiB
Ruby
100 lines
3.8 KiB
Ruby
module Carto
|
|
module Api
|
|
class MobileAppPresenter
|
|
|
|
def initialize(mobile_app, current_user, fetch_mobile_platforms, fetch_app_types)
|
|
@mobile_app = mobile_app
|
|
@current_user = current_user
|
|
@fetch_mobile_platforms = fetch_mobile_platforms
|
|
@fetch_app_types = fetch_app_types
|
|
end
|
|
|
|
def data
|
|
return {} if @mobile_app.nil?
|
|
data = {
|
|
id: @mobile_app.id,
|
|
name: @mobile_app.name,
|
|
description: @mobile_app.description,
|
|
icon_url: @mobile_app.icon_url,
|
|
platform: @mobile_app.platform,
|
|
app_type: @mobile_app.app_type,
|
|
app_id: @mobile_app.app_id,
|
|
license_key: @mobile_app.license_key,
|
|
monthly_users: @mobile_app.monthly_users
|
|
}
|
|
|
|
if @fetch_mobile_platforms == true
|
|
data[:mobile_platforms] = {
|
|
"android": {
|
|
text: "Android",
|
|
available: platform_available?('android', true),
|
|
selected: platform_selected?('android'),
|
|
legend: "Use package from AndroidManifest.xml. E.g: com.example.mycartoapp."
|
|
},
|
|
"ios": {
|
|
text: "iOS",
|
|
available: platform_available?('ios', true),
|
|
selected: platform_selected?('ios'),
|
|
legend: "Use Bundle identifier. You can find it in the project properties. E.g: com.example.mycartoapp."
|
|
},
|
|
"xamarin-android": {
|
|
text: "Xamarin Android",
|
|
available: platform_available?('xamarin-android', @current_user.mobile_xamarin),
|
|
selected: platform_selected?('xamarin-android'),
|
|
legend: "Use package from AndroidManifest.xml. E.g: com.example.mycartoapp."
|
|
},
|
|
"xamarin-ios": {
|
|
text: "Xamarin iOS",
|
|
available: platform_available?('xamarin-ios', @current_user.mobile_xamarin),
|
|
selected: platform_selected?('xamarin-ios'),
|
|
legend: "Use Bundle identifier. You can find it in the project properties. E.g: com.example.mycartoapp."
|
|
},
|
|
"windows-phone": {
|
|
text: "Windows Phone",
|
|
available: platform_available?('windows-phone', @current_user.mobile_xamarin),
|
|
selected: platform_selected?('windows-phone'),
|
|
legend: "Use the Package name from Package.appmanifest. E.g: c882d38a-5c09-4994-87f0-89875cdee539."
|
|
}
|
|
}
|
|
end
|
|
|
|
if @fetch_app_types == true
|
|
data[:app_types] = {
|
|
"open": {
|
|
text: "Limits based on your CARTO plan. <a href='https://carto.com/developers/fundamentals/limits/'
|
|
target='_blank'>Learn more</a>.",
|
|
available: app_type_available?('open', @current_user.open_apps_enabled?),
|
|
selected: app_type_selected?('open')
|
|
},
|
|
"private": {
|
|
text: "Only for enterprise. <a href='https://carto.com/pricing/' target='_blank'>Learn more</a>.",
|
|
available: app_type_available?('private', @current_user.private_apps_enabled?),
|
|
selected: app_type_selected?('private')
|
|
}
|
|
}
|
|
end
|
|
|
|
data
|
|
end
|
|
|
|
private
|
|
|
|
def platform_available?(platform, current_platform_enabled)
|
|
(!@mobile_app.persisted? && current_platform_enabled) || platform_selected?(platform)
|
|
end
|
|
|
|
def platform_selected?(platform)
|
|
@mobile_app.platform == platform
|
|
end
|
|
|
|
def app_type_available?(app_type, current_apps_enabled)
|
|
(!@mobile_app.persisted? && current_apps_enabled) || app_type_selected?(app_type) || (@mobile_app.persisted? && current_apps_enabled)
|
|
end
|
|
|
|
def app_type_selected?(app_type)
|
|
@mobile_app.app_type == app_type
|
|
end
|
|
end
|
|
end
|
|
end
|