* Add maskable icon support for Android * Update manifest_serializer.rb * Fix linting issue
		
			
				
	
	
		
			90 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| class ManifestSerializer < ActiveModel::Serializer
 | |
|   include RoutingHelper
 | |
|   include ActionView::Helpers::TextHelper
 | |
| 
 | |
|   ICON_SIZES = %w(
 | |
|     36
 | |
|     48
 | |
|     72
 | |
|     96
 | |
|     144
 | |
|     192
 | |
|     256
 | |
|     384
 | |
|     512
 | |
|   ).freeze
 | |
| 
 | |
|   attributes :name, :short_name,
 | |
|              :icons, :theme_color, :background_color,
 | |
|              :display, :start_url, :scope,
 | |
|              :share_target, :shortcuts
 | |
| 
 | |
|   def name
 | |
|     object.title
 | |
|   end
 | |
| 
 | |
|   def short_name
 | |
|     object.title
 | |
|   end
 | |
| 
 | |
|   def icons
 | |
|     ICON_SIZES.map do |size|
 | |
|       {
 | |
|         src: full_pack_url("media/icons/android-chrome-#{size}x#{size}.png"),
 | |
|         sizes: "#{size}x#{size}",
 | |
|         type: 'image/png',
 | |
|         purpose: 'any maskable',
 | |
|       }
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   def theme_color
 | |
|     '#191b22'
 | |
|   end
 | |
| 
 | |
|   def background_color
 | |
|     '#191b22'
 | |
|   end
 | |
| 
 | |
|   def display
 | |
|     'standalone'
 | |
|   end
 | |
| 
 | |
|   def start_url
 | |
|     '/home'
 | |
|   end
 | |
| 
 | |
|   def scope
 | |
|     '/'
 | |
|   end
 | |
| 
 | |
|   def share_target
 | |
|     {
 | |
|       url_template: 'share?title={title}&text={text}&url={url}',
 | |
|       action: 'share',
 | |
|       method: 'GET',
 | |
|       enctype: 'application/x-www-form-urlencoded',
 | |
|       params: {
 | |
|         title: 'title',
 | |
|         text: 'text',
 | |
|         url: 'url',
 | |
|       },
 | |
|     }
 | |
|   end
 | |
| 
 | |
|   def shortcuts
 | |
|     [
 | |
|       {
 | |
|         name: 'Compose new post',
 | |
|         url: '/publish',
 | |
|       },
 | |
|       {
 | |
|         name: 'Notifications',
 | |
|         url: '/notifications',
 | |
|       },
 | |
|     ]
 | |
|   end
 | |
| end
 |