forked from cybrespace/pinafore
		
	
		
			
				
	
	
		
			98 lines
		
	
	
		
			No EOL
		
	
	
		
			2.7 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			No EOL
		
	
	
		
			2.7 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<:Head>
 | 
						||
  <title>Pinafore – Add an Instance</title>
 | 
						||
</:Head>
 | 
						||
 | 
						||
<Layout page='settings'>
 | 
						||
  <SettingsLayout page='settings/instances/add' label="Add an Instance">
 | 
						||
    <h1 id="add-an-instance-h1">Add an Instance</h1>
 | 
						||
 | 
						||
    {{#if $isUserLoggedIn}}
 | 
						||
    <p>Connect to an instance to log in.</p>
 | 
						||
    {{else}}
 | 
						||
    <p>Log in to an instance to use Pinafore.</p>
 | 
						||
    {{/if}}
 | 
						||
 | 
						||
    <form class="add-new-instance" on:submit='onSubmit(event)' aria-labelledby="add-an-instance-h1">
 | 
						||
 | 
						||
      {{#if $logInToInstanceError && $logInToInstanceErrorForText === $instanceNameInSearch}}
 | 
						||
      <div class="form-error form-error-user-error" role="alert">
 | 
						||
        Error: {{$logInToInstanceError}}
 | 
						||
      </div>
 | 
						||
      {{/if}}
 | 
						||
 | 
						||
      <noscript>
 | 
						||
        <div class="form-error" role="alert">
 | 
						||
          You must enable JavaScript to log in.
 | 
						||
        </div>
 | 
						||
      </noscript>
 | 
						||
 | 
						||
      <label for="instanceInput">Instance:</label>
 | 
						||
      <input class="new-instance-input" type="text" id="instanceInput"
 | 
						||
             bind:value='$instanceNameInSearch' placeholder='' required
 | 
						||
      >
 | 
						||
      <button class="primary" type="submit" id="submitButton"
 | 
						||
              disabled="{{!$instanceNameInSearch || $logInToInstanceLoading}}">
 | 
						||
        Add instance
 | 
						||
      </button>
 | 
						||
    </form>
 | 
						||
 | 
						||
    {{#if !$isUserLoggedIn}}
 | 
						||
    <p>Don't have an instance? <ExternalLink href="https://joinmastodon.org">Join Mastodon!</ExternalLink></p>
 | 
						||
    {{/if}}
 | 
						||
  </SettingsLayout>
 | 
						||
</Layout>
 | 
						||
<style>
 | 
						||
  .form-error {
 | 
						||
    border: 2px solid red;
 | 
						||
    border-radius: 2px;
 | 
						||
    padding: 10px;
 | 
						||
    font-size: 1.3em;
 | 
						||
    margin: 5px;
 | 
						||
    background-color: var(--main-bg);
 | 
						||
  }
 | 
						||
  input.new-instance-input {
 | 
						||
    min-width: 60%;
 | 
						||
    max-width: 100%;
 | 
						||
  }
 | 
						||
 | 
						||
  form.add-new-instance {
 | 
						||
    background: var(--form-bg);
 | 
						||
    padding: 5px 10px 15px;
 | 
						||
    margin: 20px auto;
 | 
						||
    border: 1px solid var(--form-border);
 | 
						||
    border-radius: 4px;
 | 
						||
  }
 | 
						||
 | 
						||
  form.add-new-instance label, form.add-new-instance input, form.add-new-instance button {
 | 
						||
    display: block;
 | 
						||
    margin: 20px 5px;
 | 
						||
  }
 | 
						||
</style>
 | 
						||
<script>
 | 
						||
  import Layout from '../../_components/Layout.html';
 | 
						||
  import SettingsLayout from '../_components/SettingsLayout.html'
 | 
						||
  import { store } from '../../_store/store'
 | 
						||
  import { logInToInstance, handleOauthCode } from '../../_actions/addInstance'
 | 
						||
  import ExternalLink from '../../_components/ExternalLink.html'
 | 
						||
 | 
						||
  export default {
 | 
						||
    async oncreate () {
 | 
						||
      let codeMatch = location.search.match(/code=([^&]+)/)
 | 
						||
      if (codeMatch) {
 | 
						||
        handleOauthCode(codeMatch[1])
 | 
						||
      }
 | 
						||
    },
 | 
						||
    components: {
 | 
						||
      Layout,
 | 
						||
      SettingsLayout,
 | 
						||
      ExternalLink
 | 
						||
    },
 | 
						||
    store: () => store,
 | 
						||
    methods: {
 | 
						||
      onSubmit(event) {
 | 
						||
        event.preventDefault()
 | 
						||
        logInToInstance()
 | 
						||
      }
 | 
						||
    }
 | 
						||
  }
 | 
						||
</script> |