package com.sffteam.voidclient import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.Article import androidx.compose.material.icons.automirrored.filled.InsertDriveFile import androidx.compose.material.icons.filled.Article import androidx.compose.material.icons.filled.AudioFile import androidx.compose.material.icons.filled.InsertDriveFile import androidx.compose.material3.windowsizeclass.WindowSizeClass import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector import java.io.File import kotlin.math.absoluteValue object Utils { lateinit var windowSize: WindowSizeClass val audioExtensions = listOf( "mp3", "aac", "m4a", "ogg", "oga", "opus", "wma", "amr", "3gp", "flac", "alac", "ape", "wav", "aiff", "aif", "aifc", "wv", "tta", "tak", "shn", "dsf", "dff", "dsd", "pcm", "dxp", "pt24", "mid", "midi", "rmi", "kar", "mod", "xm", "s3m", "it", "mtm", "umx", "mo3", "caf", "au", "snd", "ra", "rm", "mka", "weba", "ac3", "eac3", "dts", "m4b", "voc", "8svx", "cda", "gsm", "mpc", "spx", "la" ) fun getIconForFile(file : String) : ImageVector { val extension = File(file).extension if (extension == "txt") { return Icons.AutoMirrored.Filled.Article } for (i in audioExtensions) { if (extension == i) { return Icons.Filled.AudioFile } } return Icons.AutoMirrored.Filled.InsertDriveFile } fun getSizeFromBytes(bytes : Long) : String { if (bytes <= 1000) { return "$bytes B" } if (bytes in 1000..<1000000) { val kb = bytes / 1000 return "$kb KB" } if (bytes > 1000000) { val mb = bytes / 1000000 return "$mb MB" } return "$bytes" } fun getColorForAvatar(avatar: String): Pair { val colors = listOf( Pair(Color(0xFFFF0026), Color(0xFFFF00BB)), Pair(Color(0xFFFFC004), Color(0xFFFFE59F)), Pair(Color(0xFF0A5BC2), Color(0xFF3B8FFF)), Pair(Color(0xFF04C715), Color(0xFF6AFC78)), Pair(Color(0xFFA308C4), Color(0xFFE071FC)), ) val index = (avatar.hashCode().absoluteValue) % colors.size return colors[index] } fun getColorForNickname(nickName: String): Color { val colors = listOf( Color(0xFFFF2B4B), Color(0xFFF8C324), Color(0xFFFD903C), Color(0xFF2196F3), Color(0xFF2BFF47), Color(0xFFE139FF), Color(0xFF41E0D2), Color(0xFF7826FC), ) val index = (nickName.hashCode().absoluteValue) % colors.size return colors[index] } }