package htmlcheck

import "sort"

// Platforms returns all platforms with their respective email clients
func Platforms() (map[string][]string, error) {
	// [platform]clients
	data := make(map[string][]string)

	if err := loadJSONData(); err != nil {
		return data, err
	}

	for _, t := range cie.Data {
		for family, stats := range t.Stats {
			niceFamily := cie.NiceNames.Family[family]
			for platform := range stats.(map[string]interface{}) {
				c, found := data[platform]
				if !found {
					data[platform] = []string{}
				}
				if !inArray(niceFamily, c) {
					c = append(c, niceFamily)
					data[platform] = c
				}
			}
		}
	}

	for group, clients := range data {
		sort.Slice(clients, func(i, j int) bool {
			return clients[i] < clients[j]
		})
		data[group] = clients
	}

	return data, nil
}