feat(platform): complete $updateSettings deprecation and interface consolidation

- Remove deprecated $updateSettings method entirely
- Migrate 21 components to use proper settings methods
- Consolidate IPlatformServiceMixin and ComponentCustomProperties interfaces
- Establish single source of truth for platform service methods
- Update all components to use $saveMySettings, $saveUserSettings, $saveSettings
- Remove interface duplication and deprecated method warnings
- Ensure clean, maintainable codebase with proper separation of concerns

Breaking Change: $updateSettings method removed - use $saveSettings variants instead
This commit is contained in:
Matthew Raymer
2025-08-19 11:26:04 +00:00
parent 1d0c8ac3cf
commit 243c3eea32
15 changed files with 221 additions and 177 deletions

View File

@@ -0,0 +1,28 @@
#!/bin/bash
# CI check script to ensure no new $updateSettings usage is introduced
# This script will fail CI if any $updateSettings calls are found
set -e
echo "🔍 Checking for deprecated \$updateSettings usage..."
# Search for $updateSettings usage in source files
USAGE_COUNT=$(grep -r "\$updateSettings" src/ --include="*.vue" --include="*.ts" --include="*.js" | wc -l)
if [ "$USAGE_COUNT" -gt 0 ]; then
echo "❌ Found $USAGE_COUNT usage(s) of deprecated \$updateSettings method:"
echo ""
grep -r "\$updateSettings" src/ --include="*.vue" --include="*.ts" --include="*.js" -n
echo ""
echo "⚠️ Migration required:"
echo " - For global settings: use \$saveSettings(changes)"
echo " - For user-specific settings: use \$saveUserSettings(did, changes)"
echo " - For current user settings: use \$saveMySettings(changes)"
echo ""
echo "Run 'node scripts/migrate-update-settings.js' for migration guidance."
exit 1
else
echo "✅ No \$updateSettings usage found!"
exit 0
fi

View File

@@ -0,0 +1,110 @@
#!/usr/bin/env node
/**
* Migration script to replace deprecated $updateSettings calls
* with the appropriate new methods ($saveSettings, $saveUserSettings, $saveMySettings)
*
* Usage: node scripts/migrate-update-settings.js
*
* This script will:
* 1. Find all files containing $updateSettings calls
* 2. Show the migration suggestions for each call
* 3. Optionally perform the replacements
*/
const fs = require('fs');
const path = require('path');
const glob = require('glob');
// Migration patterns
const MIGRATION_PATTERNS = [
{
pattern: /\$updateSettings\(\s*(\{[^}]*\})\s*\)/g,
replacement: '$saveMySettings($1)',
description: 'Single parameter (changes only) -> $saveMySettings'
},
{
pattern: /\$updateSettings\(\s*(\{[^}]*\})\s*,\s*([^)]+)\s*\)/g,
replacement: '$saveUserSettings($2, $1)',
description: 'Two parameters (changes, did) -> $saveUserSettings(did, changes)'
}
];
// Find all Vue and TypeScript files
function findFiles() {
const patterns = [
'src/**/*.vue',
'src/**/*.ts',
'src/**/*.js'
];
let files = [];
patterns.forEach(pattern => {
files = files.concat(glob.sync(pattern, { ignore: ['node_modules/**', 'dist/**'] }));
});
return files;
}
// Analyze a file for $updateSettings usage
function analyzeFile(filePath) {
const content = fs.readFileSync(filePath, 'utf8');
const lines = content.split('\n');
const usages = [];
lines.forEach((line, index) => {
if (line.includes('$updateSettings')) {
usages.push({
line: index + 1,
content: line.trim(),
file: filePath
});
console.log(`\n${filePath}:${index + 1}`);
console.log(` ${line.trim()}`);
// Show migration suggestion
MIGRATION_PATTERNS.forEach(pattern => {
if (pattern.pattern.test(line)) {
const replacement = line.replace(pattern.pattern, pattern.replacement);
console.log(`${replacement.trim()}`);
console.log(` ${pattern.description}`);
}
});
}
});
return usages;
}
// Main execution
function main() {
console.log('🔍 Finding files with $updateSettings usage...\n');
const files = findFiles();
let totalUsages = 0;
files.forEach(file => {
const usages = analyzeFile(file);
totalUsages += usages.length;
});
console.log(`\n📊 Summary:`);
console.log(` Files scanned: ${files.length}`);
console.log(` Total usages: ${totalUsages}`);
if (totalUsages > 0) {
console.log(`\n📝 Migration Guide:`);
console.log(` 1. For global/default settings: use $saveSettings(changes)`);
console.log(` 2. For user-specific settings: use $saveUserSettings(did, changes)`);
console.log(` 3. For current user settings: use $saveMySettings(changes)`);
console.log(`\n⚠️ Note: $updateSettings is deprecated and will be removed in a future version.`);
} else {
console.log(`\n✅ No $updateSettings usage found!`);
}
}
if (require.main === module) {
main();
}
module.exports = { findFiles, analyzeFile, MIGRATION_PATTERNS };