mirror of
https://github.com/hcengineering/platform.git
synced 2026-10-18 22:13:39 +02:00
* UBERF-9716: Draft user profile Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-9716: Redesign user profile card Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-9716: Hide error for profile popup Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-9716: Add achievement header and refactor Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-9716: Display timezone Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-9716: Fix formatting Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-9716: Refactor Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-9716: Add preview for mentions Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-9716: Move achievements to separate module and use component extension Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-9716: Clean up Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-9716: Fix rush check Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-9716: Clean up Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-9716: Fix validate Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-9716: Fix validate Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-9716: Minor fixes Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-9716: Fix formatting and template Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-9716: Update npm lock Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-9716: Add light background and fix some issues Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-9716: Clean up Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-9716: Fix svelte error Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-9716: Clean up Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-9716: Add preview to new chat Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-9716: Fix svelte Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-9716: Update avatar selector Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-9716: Use instead of px Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-9716: Accent name Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-9716: Fix formatting Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-9716: Remove unused width prop Signed-off-by: Artem Savchenko <armisav@gmail.com> * UBERF-9716: Remove isButtonIcon Signed-off-by: Artem Savchenko <armisav@gmail.com> --------- Signed-off-by: Artem Savchenko <armisav@gmail.com>
49 lines
1.7 KiB
TypeScript
49 lines
1.7 KiB
TypeScript
//
|
|
// Copyright © 2025 Hardcore Engineering Inc.
|
|
//
|
|
// Licensed under the Eclipse Public License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License. You may
|
|
// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
//
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
//
|
|
|
|
import achievement from '@hcengineering/achievement'
|
|
import { type IntlString, type Asset } from '@hcengineering/platform'
|
|
|
|
interface PersonAchievement {
|
|
icon: Asset
|
|
tooltip: IntlString
|
|
}
|
|
|
|
// TODO: Remove and replace with actual person achievements, it is just for demonstration. Implement achievement service.
|
|
const possibleAchievements: PersonAchievement[] = [
|
|
{ icon: achievement.image.EarliestAdopter, tooltip: achievement.string.EarliestAdopter },
|
|
{ icon: achievement.image.Epic, tooltip: achievement.string.Epic },
|
|
{ icon: achievement.image.Legendary, tooltip: achievement.string.Legendary }
|
|
]
|
|
|
|
function hashStringToInt (str: string): number {
|
|
if (str === undefined) return 0
|
|
let hash = 0
|
|
if (str.length === 0) return hash
|
|
for (let i = 0; i < str.length; i++) {
|
|
const char = str.charCodeAt(i)
|
|
hash = (hash << 5) - hash + char
|
|
hash |= 0 // Convert to a 32-bit integer
|
|
}
|
|
return hash
|
|
}
|
|
|
|
export function getPersonAchievements (personId: string): PersonAchievement[] {
|
|
const personHash = hashStringToInt(personId)
|
|
return possibleAchievements.filter((_, index) => {
|
|
return personHash % (index + 1) === 0
|
|
})
|
|
}
|