Added support for unknown filetypes in snippets
This commit is contained in:
		
							parent
							
								
									6063a7dd71
								
							
						
					
					
						commit
						38e93d5208
					
				| 
						 | 
					@ -1,4 +1,5 @@
 | 
				
			||||||
const TimelineMediaTypes = {
 | 
					const TimelineMediaTypes = {
 | 
				
			||||||
 | 
						UNKNOWN: 0,
 | 
				
			||||||
    IMAGE: 1,
 | 
					    IMAGE: 1,
 | 
				
			||||||
    VIDEO: 2,
 | 
					    VIDEO: 2,
 | 
				
			||||||
    AUDIO: 3,
 | 
					    AUDIO: 3,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -56,6 +56,10 @@
 | 
				
			||||||
				<audio src="{{ .AssetUrl }}" controls>
 | 
									<audio src="{{ .AssetUrl }}" controls>
 | 
				
			||||||
			{{ else if eq .Type mediaembed }}
 | 
								{{ else if eq .Type mediaembed }}
 | 
				
			||||||
				{{ .EmbedHTML }}
 | 
									{{ .EmbedHTML }}
 | 
				
			||||||
 | 
								{{ else }}
 | 
				
			||||||
 | 
									<div class="project-card br2 pv1 ph2">
 | 
				
			||||||
 | 
										<a href="{{ .AssetUrl }}" target="_blank">{{ .Filename }} ({{ filesize .FileSize }})</a>
 | 
				
			||||||
 | 
									</div>
 | 
				
			||||||
			{{ end }}
 | 
								{{ end }}
 | 
				
			||||||
		</div>
 | 
							</div>
 | 
				
			||||||
	{{ end }}
 | 
						{{ end }}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -21,6 +21,10 @@
 | 
				
			||||||
                    <div class="mb3 aspect-ratio aspect-ratio--16x9">
 | 
					                    <div class="mb3 aspect-ratio aspect-ratio--16x9">
 | 
				
			||||||
                        {{ .EmbedHTML }}
 | 
					                        {{ .EmbedHTML }}
 | 
				
			||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
 | 
									{{ else }}
 | 
				
			||||||
 | 
										<div class="project-card br2 pv1 ph2">
 | 
				
			||||||
 | 
											<a href="{{ .AssetUrl }}" target="_blank">{{ .Filename }} ({{ filesize .FileSize }})</a>
 | 
				
			||||||
 | 
										</div>
 | 
				
			||||||
                {{ end }}
 | 
					                {{ end }}
 | 
				
			||||||
            {{ end }}
 | 
					            {{ end }}
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -193,6 +193,25 @@ var HMNTemplateFuncs = template.FuncMap{
 | 
				
			||||||
	"noescape": func(str string) template.HTML {
 | 
						"noescape": func(str string) template.HTML {
 | 
				
			||||||
		return template.HTML(str)
 | 
							return template.HTML(str)
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
 | 
						"filesize": func(numBytes int) string {
 | 
				
			||||||
 | 
							scales := []string{
 | 
				
			||||||
 | 
								" bytes",
 | 
				
			||||||
 | 
								"kb",
 | 
				
			||||||
 | 
								"mb",
 | 
				
			||||||
 | 
								"gb",
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							num := float64(numBytes)
 | 
				
			||||||
 | 
							scale := 0
 | 
				
			||||||
 | 
							for num > 1024 && scale < len(scales)-1 {
 | 
				
			||||||
 | 
								num /= 1024
 | 
				
			||||||
 | 
								scale += 1
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							precision := 0
 | 
				
			||||||
 | 
							if scale > 0 {
 | 
				
			||||||
 | 
								precision = 2
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return fmt.Sprintf("%.*f%s", precision, num, scales[scale])
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	// NOTE(asaf): Template specific functions:
 | 
						// NOTE(asaf): Template specific functions:
 | 
				
			||||||
	"projectcarddata": func(project Project, classes string) ProjectCardData {
 | 
						"projectcarddata": func(project Project, classes string) ProjectCardData {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -305,7 +305,8 @@ type TimelineItem struct {
 | 
				
			||||||
type TimelineItemMediaType int
 | 
					type TimelineItemMediaType int
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const (
 | 
					const (
 | 
				
			||||||
	TimelineItemMediaTypeImage TimelineItemMediaType = iota + 1
 | 
						TimelineItemMediaTypeUnknown TimelineItemMediaType = iota
 | 
				
			||||||
 | 
						TimelineItemMediaTypeImage
 | 
				
			||||||
	TimelineItemMediaTypeVideo
 | 
						TimelineItemMediaTypeVideo
 | 
				
			||||||
	TimelineItemMediaTypeAudio
 | 
						TimelineItemMediaTypeAudio
 | 
				
			||||||
	TimelineItemMediaTypeEmbed
 | 
						TimelineItemMediaTypeEmbed
 | 
				
			||||||
| 
						 | 
					@ -318,6 +319,8 @@ type TimelineItemMedia struct {
 | 
				
			||||||
	ThumbnailUrl        string
 | 
						ThumbnailUrl        string
 | 
				
			||||||
	MimeType            string
 | 
						MimeType            string
 | 
				
			||||||
	Width, Height       int
 | 
						Width, Height       int
 | 
				
			||||||
 | 
						Filename            string
 | 
				
			||||||
 | 
						FileSize            int
 | 
				
			||||||
	ExtraOpenGraphItems []OpenGraphItem
 | 
						ExtraOpenGraphItems []OpenGraphItem
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -89,6 +89,8 @@ func SnippetToTimelineItem(
 | 
				
			||||||
			item.EmbedMedia = append(item.EmbedMedia, videoMediaItem(asset))
 | 
								item.EmbedMedia = append(item.EmbedMedia, videoMediaItem(asset))
 | 
				
			||||||
		} else if strings.HasPrefix(asset.MimeType, "audio/") {
 | 
							} else if strings.HasPrefix(asset.MimeType, "audio/") {
 | 
				
			||||||
			item.EmbedMedia = append(item.EmbedMedia, audioMediaItem(asset))
 | 
								item.EmbedMedia = append(item.EmbedMedia, audioMediaItem(asset))
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								item.EmbedMedia = append(item.EmbedMedia, unknownMediaItem(asset))
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -100,7 +102,8 @@ func SnippetToTimelineItem(
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if len(item.EmbedMedia) > 0 && (item.EmbedMedia[0].Width == 0 || item.EmbedMedia[0].Height == 0) {
 | 
						if len(item.EmbedMedia) == 0 ||
 | 
				
			||||||
 | 
							(len(item.EmbedMedia) > 0 && (item.EmbedMedia[0].Width == 0 || item.EmbedMedia[0].Height == 0)) {
 | 
				
			||||||
		item.CanShowcase = false
 | 
							item.CanShowcase = false
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -185,3 +188,15 @@ func youtubeMediaItem(videoId string) templates.TimelineItemMedia {
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func unknownMediaItem(asset *models.Asset) templates.TimelineItemMedia {
 | 
				
			||||||
 | 
						assetUrl := hmnurl.BuildS3Asset(asset.S3Key)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return templates.TimelineItemMedia{
 | 
				
			||||||
 | 
							Type:     templates.TimelineItemMediaTypeUnknown,
 | 
				
			||||||
 | 
							AssetUrl: assetUrl,
 | 
				
			||||||
 | 
							MimeType: asset.MimeType,
 | 
				
			||||||
 | 
							Filename: asset.Filename,
 | 
				
			||||||
 | 
							FileSize: asset.Size,
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue