page.tsx 1.32 KB
Newer Older
Eva Ho's avatar
Eva Ho committed
1
2
import Image from 'next/image'

Eva Ho's avatar
Eva Ho committed
3
import Header from '../header'
4
5
import Downloader from './downloader'
import Signup from './signup'
Jeffrey Morgan's avatar
Jeffrey Morgan committed
6
7

export default async function Download() {
8
9
10
11
  const res = await fetch('https://api.github.com/repos/jmorganca/ollama/releases', { next: { revalidate: 60 } })
  const data = await res.json()

  if (data.length === 0) {
12
    return null
13
14
15
16
17
18
  }

  const latest = data[0]
  const assets = latest.assets || []

  if (assets.length === 0) {
19
    return null
20
  }
Jeffrey Morgan's avatar
Jeffrey Morgan committed
21
22

  // todo: get the correct asset for the current arch/os
23
24
25
26
27
  const asset = assets.find(
    (a: any) => a.name.toLowerCase().includes('darwin') && a.name.toLowerCase().includes('.zip')
  )

  if (!asset) {
28
    return null
29
  }
Jeffrey Morgan's avatar
Jeffrey Morgan committed
30

31
  return (
Eva Ho's avatar
Eva Ho committed
32
33
    <>
      <Header />
Eva Ho's avatar
Eva Ho committed
34
      <main className='flex min-h-screen max-w-6xl flex-col py-20 px-16 lg:p-32 items-center mx-auto'>
Eva Ho's avatar
Eva Ho committed
35
        <Image src='/ollama.png' width={64} height={64} alt='ollamaIcon' />
Eva Ho's avatar
Eva Ho committed
36
37
38
39
40
        <section className='mt-12 mb-8 text-center'>
          <h2 className='my-2 max-w-md text-3xl tracking-tight'>Downloading...</h2>
          <h3 className='text-base text-neutral-500 mt-12 max-w-[16rem]'>
            While Ollama downloads, sign up to get notified of new updates.
          </h3>
Eva Ho's avatar
Eva Ho committed
41
          <Downloader url={asset.browser_download_url} />
Eva Ho's avatar
Eva Ho committed
42
        </section>
43
        <Signup />
Eva Ho's avatar
Eva Ho committed
44
45
      </main>
    </>
46
  )
Jeffrey Morgan's avatar
Jeffrey Morgan committed
47
}