forked from pingdotgg/t3code
-
Notifications
You must be signed in to change notification settings - Fork 0
feat(lastcode): import settings from T3 Code #12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
bc9f0b0
feat(lastcode): import settings from T3 Code
lastobelus ade5754
fix(lastcode): accept runtime settings syntax
lastobelus 3de4e37
fix(lastcode): guard WSL-only settings imports
lastobelus f5d7913
fix(lastcode): preserve usable model preferences
lastobelus 2055021
fix(lastcode): preserve valid imported configuration
lastobelus f3c4d7a
refactor(lastcode): keep settings import intentionally small
lastobelus 42bf3c4
fix(lastcode): match keybinding retention order
lastobelus File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,75 @@ | ||
| import { | ||
| LastCodeSettingsImportPreviewSchema, | ||
| LastCodeSettingsImportResultSchema, | ||
| } from "@t3tools/contracts"; | ||
| import * as Effect from "effect/Effect"; | ||
| import * as Schema from "effect/Schema"; | ||
|
|
||
| import * as DesktopEnvironment from "../../app/DesktopEnvironment.ts"; | ||
| import * as DesktopLifecycle from "../../app/DesktopLifecycle.ts"; | ||
| import * as DesktopAppSettings from "../../settings/DesktopAppSettings.ts"; | ||
| import { | ||
| importT3Settings as importT3SettingsFiles, | ||
| isT3SettingsImportSupported, | ||
| previewT3SettingsImport as previewT3SettingsImportFiles, | ||
| type LastCodeSettingsImportPaths, | ||
| } from "../../settings/LastCodeSettingsImport.ts"; | ||
| import * as IpcChannels from "../channels.ts"; | ||
| import * as DesktopIpc from "../DesktopIpc.ts"; | ||
|
|
||
| function resolveImportPaths( | ||
| environment: DesktopEnvironment.DesktopEnvironment["Service"], | ||
| ): LastCodeSettingsImportPaths { | ||
| return { | ||
| sourceDirectory: environment.path.join(environment.homeDirectory, ".t3", "userdata"), | ||
| destinationDirectory: environment.stateDir, | ||
| backupRootDirectory: environment.path.join(environment.baseDir, "settings-import-backups"), | ||
| }; | ||
| } | ||
|
|
||
| const WSL_ONLY_IMPORT_MESSAGE = | ||
| "Import is unavailable while WSL-only mode is selected. Disable WSL-only mode before importing the Windows profile."; | ||
|
|
||
| class LastCodeSettingsImportUnavailableError extends Schema.TaggedErrorClass<LastCodeSettingsImportUnavailableError>()( | ||
| "LastCodeSettingsImportUnavailableError", | ||
| { reason: Schema.String }, | ||
| ) { | ||
| override get message(): string { | ||
| return this.reason; | ||
| } | ||
| } | ||
|
|
||
| export const previewT3SettingsImport = DesktopIpc.makeIpcMethod({ | ||
| channel: IpcChannels.LASTCODE_SETTINGS_IMPORT_PREVIEW_CHANNEL, | ||
| payload: Schema.Void, | ||
| result: LastCodeSettingsImportPreviewSchema, | ||
| handler: Effect.fn("desktop.ipc.lastCodeSettings.previewImport")(function* () { | ||
| const environment = yield* DesktopEnvironment.DesktopEnvironment; | ||
| const appSettings = yield* DesktopAppSettings.DesktopAppSettings; | ||
| const preview = yield* Effect.tryPromise(() => | ||
| previewT3SettingsImportFiles(resolveImportPaths(environment)), | ||
| ); | ||
| return !isT3SettingsImportSupported(environment.platform, (yield* appSettings.get).wslOnly) | ||
|
lastobelus marked this conversation as resolved.
|
||
| ? { ...preview, canImport: false, message: WSL_ONLY_IMPORT_MESSAGE } | ||
| : preview; | ||
| }), | ||
| }); | ||
|
|
||
| export const importT3Settings = DesktopIpc.makeIpcMethod({ | ||
| channel: IpcChannels.LASTCODE_SETTINGS_IMPORT_CHANNEL, | ||
| payload: Schema.Void, | ||
| result: LastCodeSettingsImportResultSchema, | ||
| handler: Effect.fn("desktop.ipc.lastCodeSettings.import")(function* () { | ||
| const environment = yield* DesktopEnvironment.DesktopEnvironment; | ||
| const appSettings = yield* DesktopAppSettings.DesktopAppSettings; | ||
| if (!isT3SettingsImportSupported(environment.platform, (yield* appSettings.get).wslOnly)) { | ||
| return yield* new LastCodeSettingsImportUnavailableError({ reason: WSL_ONLY_IMPORT_MESSAGE }); | ||
| } | ||
| const result = yield* Effect.tryPromise(() => | ||
| importT3SettingsFiles(resolveImportPaths(environment)), | ||
| ); | ||
| const lifecycle = yield* DesktopLifecycle.DesktopLifecycle; | ||
| yield* lifecycle.relaunch("t3-settings-imported"); | ||
| return result; | ||
| }), | ||
| }); | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.