(options = {})
| 91 | } |
| 92 | |
| 93 | export function resolveDefaultModelPreferenceUpdate(options = {}) { |
| 94 | const { |
| 95 | storedModelPreference = null, |
| 96 | pendingModelName = null, |
| 97 | hasCurrentSession = false, |
| 98 | normalizeModelName = (modelName) => modelName, |
| 99 | upgradeDefaultModelPreference = (modelName) => modelName |
| 100 | } = options; |
| 101 | |
| 102 | const normalizedStoredModelPreference = normalizeModelName(storedModelPreference); |
| 103 | const upgradedStoredModelPreference = upgradeDefaultModelPreference(normalizedStoredModelPreference); |
| 104 | const shouldSaveStoredPreference = !!upgradedStoredModelPreference && |
| 105 | upgradedStoredModelPreference !== storedModelPreference; |
| 106 | |
| 107 | let nextPendingModelName = pendingModelName; |
| 108 | let pendingChanged = false; |
| 109 | |
| 110 | if (!hasCurrentSession && upgradedStoredModelPreference) { |
| 111 | const normalizedPendingModelName = normalizeModelName(pendingModelName); |
| 112 | const pendingTracksStoredDefault = !normalizedPendingModelName || |
| 113 | normalizedPendingModelName === normalizedStoredModelPreference || |
| 114 | normalizedPendingModelName === storedModelPreference; |
| 115 | |
| 116 | if (pendingTracksStoredDefault && normalizedPendingModelName !== upgradedStoredModelPreference) { |
| 117 | nextPendingModelName = upgradedStoredModelPreference; |
| 118 | pendingChanged = true; |
| 119 | } |
| 120 | } |
| 121 | |
| 122 | return { |
| 123 | normalizedStoredModelPreference, |
| 124 | upgradedStoredModelPreference, |
| 125 | shouldSaveStoredPreference, |
| 126 | nextPendingModelName, |
| 127 | pendingChanged, |
| 128 | changed: shouldSaveStoredPreference || pendingChanged |
| 129 | }; |
| 130 | } |
| 131 | |
| 132 | export function findModelByNameOrId(models = [], modelNameOrId = '', normalizeModelNameFn = null) { |
| 133 | if (!modelNameOrId || !Array.isArray(models)) return null; |
no test coverage detected