···11+ <h1>Migrate from bluesky</h1>
12@if (environment().enableBsky) {
22- <mat-card class="wafrn-container post-card">
33- <h1>Migrate from bluesky</h1>
44- <marquee><h2>READ THIS ONE, ITS IMPORTANT</h2></marquee>
55- <p>This is important, it's easier than it looks tho. But you need to be aware of what is going to happen</p>
66- <p
77- >First of all, if you enabled bluesky on your wafrn account, this action will DESTROY THE BSKY ACCOUNT currently
88- asociated to your wafrn profile</p
99- >
1010- <p>Second, this still requires some action on your part!</p>
1111- <p>Once you press the button, the associated wafrn bsky account will be DELETED</p>
1212- <p>If you already pressed it and it was deleted, its ok no worries</p>
33+ <mat-stepper orientation="vertical">
44+ <mat-step state="prerequisites">
55+ <ng-template matStepLabel><b>Prerequisites</b></ng-template>
66+ <p>Migrating from Bluesky is relatively easy, but requires your attention!</p>
77+ <p>Let's get some prerequisites out of the way:</p>
88+ <ul>
99+ <li>If you're currently using a wafrn-hosted bsky account, <b>it will be nuked.</b></li>
1010+ <li>This doesn't always go smoothly! If any issues occur, reach out to the wafrn team!</li>
1111+ <li>If you are using a <code>.bsky.social</code> handle, it will be moved to <code>.{{ environment().bskyPDSUrl }}</code></li>
1212+ <li>You cannot use your own PDS. You will be using the Wafrn-hosted one.</li>
1313+ </ul>
1414+ <p>When you're ready, continue here:</p>
1515+ <div>
1616+ <button matButton="filled" matStepperNext>Next</button>
1717+ </div>
1818+ </mat-step>
1919+ <mat-step state="unlinking">
2020+ <ng-template matStepLabel><b>Unlinking and deleting the old account</b></ng-template>
2121+ <p>First off, we must unlink (and delete) your previous linked bluesky account. This is the Wafrn-hosted one, if you have one.</p>
2222+ <p>This will also give you an "invite code", that we'll use in the next steps to move over your existing account. Please write it down!</p>
1323 @if (!code) {
1424 <button [disabled]="loading" (click)="loadInviteCode()" mat-flat-button class="w-full">
1525 Delete bsky associated account and get invite code
1626 </button>
1727 } @else {
1828 <p>Your invite code is</p>
1919- <p
2020- ><b>{{ code }}</b></p
2121- >
2222- }
2323- <p>Ok now that you have the invite code, you need to MOOVE your bluesky account to our servers</p>
2424- <p>To do it, visit <a target="_blank" href="https://pdsmoover.com">pdsmoover</a></p>
2525- <p>provider: {{ environment().bskyPDSUrl }}</p>
2626- <p>Fill the data bearing in mind that you need to replace the invite code and the provider</p>
2727- <img src="/assets/img/pdsmoover.png" />
2828- <p
2929- >Once you are done with the MOOVE, you need to log in into bluesky, using the new PROVIDER, and create an
3030- <b>APP PASSWORD</b> in settings</p
3131- >
3232- <p>Now that you have a secure app password that is random, you can fill your bluesky username and password here</p>
3333- <form [hidden]="loading" class="px-3" [formGroup]="bskyForm" (ngSubmit)="linkBskyAccount()">
3434- <mat-form-field class="w-full">
3535- <mat-label>New name of account (@accountName.{{environment().bskyPDSUrl}})</mat-label>
3636- <input formControlName="account" type="text" matInput />
3737- </mat-form-field>
3838- <mat-form-field class="w-full">
3939- <mat-label>App Password (NOT YOUR PASSWORD, A BLUESKY APP PASSWORD)</mat-label>
4040- <input [type]="isPasswordVisible ? 'text' : 'password'" formControlName="password" matInput />
4141- <button mat-icon-button matSuffix type="button" (click)="togglePasswordVisibility()">
4242- <fa-icon [icon]="isPasswordVisible ? faEyeSlash : faEye"></fa-icon>
4343- </button>
4444- <mat-error> Password is required </mat-error>
4545- </mat-form-field>
4646- <button [disabled]="!bskyForm.valid" mat-flat-button color="primary" extended class="w-full border-round-md mt-4">
4747- <span class="flex gap-2">Link account</span>
4848- </button>
4949- </form>
5050- @if(loading) {
5151- <app-loader>
5252- </app-loader>
5353- }
5454- </mat-card>
2929+ <p><b>{{ code }}</b></p>
5530 }
3131+ <p>Got the code? Alright, on to the next step.</p>
3232+ <div>
3333+ <button matButton="filled" matStepperNext>Next</button>
3434+ </div>
3535+ </mat-step>
3636+ <mat-step state="pdsmoover">
3737+ <ng-template matStepLabel><b>PDSMoover - Actually moving the account</b></ng-template>
3838+ <p>Now we'll use an external migration tool, called <a href="https://pdsmoover.com">PDS Moover</a> to do the actual migration part.</p>
3939+ <p>For the provider, give them this URL: <code>{{ environment().bskyPDSUrl }}</code></p>
4040+ <p>Follow their instructions <i>closely.</i> If something goes wrong, reach out to the Wafrn team and your site admin!</p>
4141+ <p>And of course, give PDS Moover the invite code that you wrote down</p>
4242+ <p><small>You wrote it down, right? If not, go back.</small></p>
4343+ <div>
4444+ <button matButton="filled" matStepperNext>Next</button>
4545+ </div>
4646+ </mat-step>
4747+ <mat-step state="linking">
4848+ <ng-template matStepLabel><b>Linking the account to Wafrn</b></ng-template>
4949+ <p>If the "MOOVE" went alright, we'll now need to link up the migrated account to Wafrn.</p>
5050+ <p>To do this, we log in to the newly migrated account as if it was any other Bluesky account on <a href="https://bsky.app">bsky.app</a>, and create an "App Password"</p>
5151+ <p>You'll find the relevant options in Settings > Privacy and Security > App Passwords</p>
5252+ <p>Once you've grabbed a new app password, put it in together with the new username here:</p>
5353+ <form [hidden]="loading" class="px-3" [formGroup]="bskyForm" (ngSubmit)="linkBskyAccount()">
5454+ <mat-form-field class="w-full">
5555+ <mat-label>New name of account (@accountName.{{environment().bskyPDSUrl}})</mat-label>
5656+ <input formControlName="account" type="text" matInput />
5757+ </mat-form-field>
5858+ <mat-form-field class="w-full">
5959+ <mat-label>App Password (NOT YOUR PASSWORD, A BLUESKY APP PASSWORD)</mat-label>
6060+ <input [type]="isPasswordVisible ? 'text' : 'password'" formControlName="password" matInput />
6161+ <button mat-icon-button matSuffix type="button" (click)="togglePasswordVisibility()">
6262+ <fa-icon [icon]="isPasswordVisible ? faEyeSlash : faEye"></fa-icon>
6363+ </button>
6464+ <mat-error> Password is required </mat-error>
6565+ </mat-form-field>
6666+ <button [disabled]="!bskyForm.valid" mat-flat-button color="primary" extended class="w-full border-round-md mt-4">
6767+ <span class="flex gap-2">Link account</span>
6868+ </button>
6969+ </form>
7070+ </mat-step>
7171+ <mat-step state="profit">
7272+ <ng-template matStepLabel><b>Profit?</b></ng-template>
7373+ <p>Hooray! All should be done! Please verify on your profile that the bluesky handle is visible. Your old Bluesky posts should also start appearing on your profile.</p>
7474+ <p>If there was any issues, <i><b>please reach out!</b></i>The Wafrn team and admins of your site are happy to help :)</p>
7575+ </mat-step>
7676+ <!-- All of these fucking icons straight up don't work -->
7777+7878+ <!-- <ng-template matStepperIcon="prerequisites">
7979+ <mat-icon>done</mat-icon>
8080+ </ng-template>
8181+8282+ <ng-template matStepperIcon="unlinking">
8383+ <mat-icon>done</mat-icon>
8484+ </ng-template>
8585+8686+ <ng-template matStepperIcon="pdsmoover">
8787+ <mat-icon>done</mat-icon>
8888+ </ng-template>
8989+9090+ <ng-template matStepperIcon="linking">
9191+ <mat-icon>done</mat-icon>
9292+ </ng-template>
9393+9494+ <ng-template matStepperIcon="profit">
9595+ <mat-icon>done</mat-icon>
9696+ </ng-template> -->
9797+ </mat-stepper>
9898+}